qt c++ 单例模式的实现
补充:单例模式需要移除拷贝构造和赋值运算
使用Qt 时,需要用到单例模式,网上查到的写法
都会报错
可用的写法
A.h:
public:
static A* getInstance(QWidget* B,QWidget* parent = nullptr);
private:
A(QWidget* B,QWidget* parent);
//移除拷贝和赋值
A(const A&) = delete;
A& operator=(const A&) = delete;
A.cpp:
A* getInstance(QWidget* B,QWidget* parent){
static A* a = new A(B,parent);
return a;
}
cpp不能写 static A* getInstace(QWidget* B,QWidget* parent),会报错
测试结果
A* a1 = A::getInstance(B);
A* a2 = A::getInstance(B);
qDebug() << a1 << a2 <<(a1 == a2);