我意识到这已经被谈论了多少次,但我还没有找到适合我的问题的解决方案。我刚刚在我的项目中实现了一个 Meyer 的单例类,但我想用它制作一个模板,以便我可以将它用作例如
class Game : public Singleton<Game>
{ /* stuff */
}
我的班级是这样定义的
template <typename T>
class Singleton
{
public:
static T& Instance();
private:
Singleton();
//declare them to prevent copies
Singleton(Singleton const&);
void operator=(Singleton const&);
};// END OF CLASS DEFINITION
// METHODS' DEFINITIONS
template<typename T>
T& Singleton<T>::Instance()
{
static T _instance;
return _instance;
}
允许 ctor 存在public
将破坏 Singleton 的整个愿景。
编辑
好的,所以我更新了我的Game
班级以成为朋友Singleton<Game>
class Game : public Singleton<Game>
{
friend class Singleton<Game>;
//...
}
但现在我有类似的东西:
未定义对“Singleton<游戏>::Singleton()”的引用
Game::Game()
在为空的函数中