gpt4 book ai didi

c++ - 我的单例模板真的是单例吗?

转载 作者:太空狗 更新时间:2023-10-29 23:41:25 25 4
gpt4 key购买 nike

有人告诉我,我的单例模板可能不是真正的单例,因为有多种方法可以用它创建多个对象。当我问如何修复它时,我被忽略了。这就是为什么我来这里问我的单例模板类真的是单例吗?

#ifndef SINGLETON_H_
#define SINGLETON_H_

template <class T>
class Singleton
{
private:
static T* instance;

protected:
Singleton<T>( )
{
}

public:
static T* getInstancePtr( )
{
if ( instance == 0 )
instance = new T( );

return instance;
}
};

template <class T> T* Singleton<T>::instance = 0;

#endif

然后它被一个类继承,我希望它像这样成为一个单例:-

class Console : public Singleton< Console >
{
};

最佳答案

您已使默认构造函数 protected 。派生类可以访问它,所以这将编译:

Console c1, c2;

关于c++ - 我的单例模板真的是单例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11267725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com