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

1.概要

/**
 * 单件宏实验
 * 创建一个可以生成单件的宏
 * 起因:想让有些控件单件,但是c++不支持静态的继承(c#支持)
 * 那么如果保证这些接口的统一呢,用宏
 */

#define createMy(AType) static AType* my; static AType* getMy();
#define initMy(AType) AType* AType::my = new AType(); AType* AType::getMy(){ return my; };

2.代码

2.0 mocro.h

#ifndef MOCRO_H
#define MOCRO_H

#define createMy(AType) static AType* my; static AType* getMy();
#define initMy(AType) AType* AType::my = new AType(); AType* AType::getMy(){ return my; };


#endif // MOCRO_H

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个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值