私はこれが何度も話されてきたことに気づきましたが、私の問題に対する適切な解決策を見つけられませんでした。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
、シングルトンのビジョン全体が破壊されます。
編集
わかりました、それで私は私のGame
クラスを友達になるように更新しましたSingleton<Game>
class Game : public Singleton<Game>
{
friend class Singleton<Game>;
//...
}
しかし今、私は次のようなものを持っています:
'Singleton <Game> :: Singleton()'への未定義の参照
Game::Game()
空の関数で