だから私は単純なシングルトンテンプレート基本クラスを持っています(質問の目的で縮小されています):
template <typename T>
class Singleton {
public:
static T& instance() {
static T me;
return me;
}
};
ここで、「シングルトンの基本クラス」が必要です。
class Base : public Singleton<Base> {
public:
void print() { std::cout << &instance() << std::endl; }
}
私が今欲しいのは、この基本クラスから子クラスを派生させることです。これは、独自のシングルトンです。
class A : public Base {
// ...
}
class B : public Base {
// ...
}
もちろんこれをすれば
A::instance().print();
B::instance().print();
どちらの場合も同じアドレスを取得します。これを達成する方法はありますか?
何のために疑問がある場合:ResourceManager
クラス、クラス'AudioManager'などによって継承されている基本クラスをプログラムしImageManager
たい。そして、実際には同じインスタンスを共有しないようにしたいが、それでもマネージャーごとに1つのインスタンス...