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

相关推荐
建军啊10 分钟前
php伪协议、代码审计工具和实战
开发语言·php
WYH28715 分钟前
为什么在cubeide里勾选了can1,生成的工程里没有can.c?
c语言·开发语言
18 分钟前
java关于键盘录入
java·开发语言
马猴烧酒.20 分钟前
JAVA后端对象存储( 图片分享平台)详解
java·开发语言·spring·腾讯云
wearegogog12330 分钟前
基于MATLAB的D2D仿真场景实现
开发语言·网络·matlab
froginwe1132 分钟前
Chart.js 散点图详解
开发语言
独自破碎E34 分钟前
【纵向扫描】最长公共前缀
java·开发语言
nuo53420240 分钟前
C语言实现类似面向对象的三大特性
c语言·开发语言
321.。43 分钟前
深入理解 Linux 线程封装:从 pthread 到 C++ 面向对象实现
linux·开发语言·c++
zfoo-framework1 小时前
kotlin
android·开发语言·kotlin