qt 用宏控制静态接口的统一

1.概要

/**

* 单件宏实验

* 创建一个可以生成单件的宏

* 起因:想让有些控件单件,但是c++不支持静态的继承(c#支持)

* 那么如果保证这些接口的统一呢,用宏

*/

2.代码

2.1 a.h

#ifndef A_H
#define A_H

#include "mocro.h"

class A
{
public:
    createMy(A);
    //static A* my;
    //static A* getMy();
    A();
    void fun();
};

#endif // A_H

2.2 a.app

#include "a.h"
#include <QDebug>

/*
A* A::my = new A();
A* A::getMy(){
    return my;
}*/

initMy(A);

A::A() {}

void A::fun(){
    qDebug() << "A my fun";
}

2.3 b.h

#ifndef B_H
#define B_H
#include "mocro.h"

class B
{
public:
    createMy(B);
    B();
    void fun();
};

#endif // B_H

2.4 b.app

#include "b.h"
#include <QDebug>

initMy(B);

B::B() {}

void B::fun(){
    qDebug() << "B my fun";
}

2.5 main.app

#include <QCoreApplication>
#include "a.h"
#include "b.h"
/**
 * 单件宏实验
 * 创建一个可以生成单件的宏
 * 起因:想让有些控件单件,但是c++不支持静态的继承(c#支持)
 * 那么如果保证这些接口的统一呢,用宏
 */
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    A* pA = A::getMy();
    pA->fun();
    B* pB = B::getMy();
    pB->fun();

    return a.exec();
}

3.运行结果

A my fun

B my fun

相关推荐
面试鸭1 分钟前
离谱!买个人信息买到网安公司头上???
java·开发语言·职场和发展
小白学大数据2 分钟前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫
Python大数据分析@5 分钟前
python操作CSV和excel,如何来做?
开发语言·python·excel
上海_彭彭30 分钟前
【提效工具开发】Python功能模块执行和 SQL 执行 需求整理
开发语言·python·sql·测试工具·element
3345543239 分钟前
element动态表头合并表格
开发语言·javascript·ecmascript
沈询-阿里43 分钟前
java-智能识别车牌号_基于spring ai和开源国产大模型_qwen vl
java·开发语言
残月只会敲键盘1 小时前
面相小白的php反序列化漏洞原理剖析
开发语言·php
ac-er88881 小时前
PHP弱类型安全问题
开发语言·安全·php
ac-er88881 小时前
PHP网络爬虫常见的反爬策略
开发语言·爬虫·php
爱吃喵的鲤鱼1 小时前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++