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

相关推荐
爱装代码的小瓶子几秒前
【C++与Linux进阶】详解信号的捕获:内核态和用户态的转换
linux·开发语言·c++
java1234_小锋6 分钟前
Java高频面试题:Mysql里where1=1会不会影响性能?
java·开发语言
小白学大数据13 分钟前
对比分析:Python爬虫模拟登录的3种主流实现方式
开发语言·爬虫·python·数据分析
guygg8817 分钟前
使用Zernike多项式进行光学镜面像差拟合的MATLAB实现
开发语言·matlab
krack716x23 分钟前
第1天:面向对象与基础语法
java·开发语言
不想看见40429 分钟前
Shuffle an Array随机与取样--力扣101算法题解笔记
开发语言·c++·算法
bu_shuo31 分钟前
Microsoft Visual C++的相关文件.sln
开发语言·c++·vc2010
AsDuang32 分钟前
Python 3.12 MagicMethods - 38 - __ifloordiv__
开发语言·python
你的不安35 分钟前
C#中 管理NuGet程序包
开发语言·c#·wpf
我是唐青枫44 分钟前
C#.NET SignalR 深入解析:实时通信、Hub 与连接管理实战
开发语言·c#·.net