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

相关推荐
萧瑟余晖19 小时前
Java深入解析篇三十三之密封类与接口(Sealed Classes)详解
java·开发语言
论迹复利1 天前
FreeRTOS 在 RISC-V 上是如何“点火“的 —— 从 main() 到第一个任务的完整链路
java·开发语言·risc-v
张宇Joaquin1 天前
鲲鹏统一并行加速库KUPL--众核并行能力介绍
java·开发语言·网络
736c1 天前
C语言-数组 07
c语言·开发语言
宸津-代码粉碎机1 天前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
LorryJovens1 天前
【LAAP科研】CEN因果等价网络理论---从双缝干涉到因果等价
开发语言·php
Brilliantwxx1 天前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络
卢锡荣1 天前
国产PD3.1全集成Type-C管控芯片LDR6020P
c语言·开发语言
Freak嵌入式1 天前
Pico UART 数据收发实战:硬件配置、MicroPython 编程
java·开发语言·单片机·嵌入式硬件·生活
Casual1 天前
【网络基础进阶】:看懂子网划分与 VLAN
开发语言·网络·php