QT 模版类单例模式
时间: 2023-10-01 07:02:14 浏览: 103
QT框架中的模版类单例模式可以通过以下代码实现:
```cpp
// Singleton.h
template <typename T>
class Singleton {
public:
static T& getInstance() {
static T instance;
return instance;
}
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
protected:
Singleton() {}
virtual ~Singleton() {}
};
```
使用该模版类单例模式时,需要继承该模版类,并将子类声明为友元类,以便访问私有构造函数:
```cpp
// MyClass.h
class MyClass : public Singleton<MyClass> {
friend class Singleton<MyClass>; // 声明为友元类
public:
void doSomething();
private:
MyClass();
~MyClass();
};
// MyClass.cpp
void MyClass::doSomething() {
// 实现具体的功能逻辑
}
MyClass::MyClass() {
// 私有构造函数
}
MyClass::~MyClass() {
// 析构函数
}
```
在需要使用该单例类的地方,可以通过`MyClass::getInstance()`来获取唯一的实例,并调用相应的成员函数:
```cpp
// main.cpp
int main() {
MyClass& instance = MyClass::getInstance();
instance.doSomething();
return 0;
}
```
通过这种方式,可以保证在整个程序中只有一个实例存在,并且可以在任何地方通过`getInstance()`来获取该实例。
阅读全文