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