实现一个模板形式的单例类,要求对于任意类型的类经过Singleton的处理之后,都能获取一个单例对象,并且可以传递任意参数
时间: 2024-03-13 09:43:56 浏览: 51
单例模式Singleton
好的,我可以帮你实现这个模板形式的单例类。以下是代码:
```cpp
template<typename T>
class Singleton {
public:
template<typename... Args>
static T* getInstance(Args&&... args) {
if (!instance) {
instance = new T(std::forward<Args>(args)...);
}
return instance;
}
static void destroyInstance() {
if (instance) {
delete instance;
instance = nullptr;
}
}
private:
static T* instance;
};
template<typename T>
T* Singleton<T>::instance = nullptr;
```
这个单例类是一个模板类,可以处理任意类型的类。在调用 `getInstance` 函数时,可以传递任意个数和类型的参数,这些参数将会被转发给单例类的构造函数。如果该类的单例对象还没有创建,将会创建一个新的对象,并返回该对象的指针。如果该类的单例对象已经创建,将直接返回该对象的指针。
在调用 `destroyInstance` 函数时,将会销毁该类的单例对象。如果该对象不存在,将不会有任何操作。
通过这个单例类,你可以在任何需要时获取一个单例对象,并且可以传递任意参数。
阅读全文