使用c++将一个模板类改成单例模式
时间: 2024-10-27 21:08:48 浏览: 16
使用C++11实现线程安全的单例模式
在C++中,可以使用模板类和静态成员来实现单例模式。单例模式保证在整个程序中只有一个实例,并提供全局访问点。以下是创建一个模板类的单例模式示例:
```cpp
template <typename T>
class Singleton {
public:
// 静态成员函数返回并初始化(如果尚未创建)单例实例
static T& getInstance() {
static T instance; // 创建静态实例
return instance;
}
private:
// 构造函数为私有,防止直接实例化
Singleton() = default;
// 没有复制构造函数和赋值运算符,阻止外部复制单例
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
};
// 现在你可以通过模板参数获取特定类型的单例实例
template<typename T>
T* getSingletonInstance() {
return &Singleton<T>::getInstance();
}
// 示例:假设有一个模板类叫做MyTemplateClass
class MyTemplateClass {
public:
void doSomething() { /* ... */ }
};
int main() {
MyTemplateClass* myInstance = getSingletonInstance<MyTemplateClass>();
myInstance->doSomething();
return 0;
}
```
阅读全文