Vap*_*ire 0 c++ singleton templates
所以我有一个简单的单例模板基类(为了问题目的缩小):
template <typename T>
class Singleton {
public:
static T& instance() {
static T me;
return me;
}
};
Run Code Online (Sandbox Code Playgroud)
现在我想要一个"基类是单身":
class Base : public Singleton<Base> {
public:
void print() { std::cout << &instance() << std::endl; }
}
Run Code Online (Sandbox Code Playgroud)
我现在想要的是从这个基类派生子类,它们是他们自己的单例:
class A : public Base {
// ...
}
class B : public Base {
// ...
}
Run Code Online (Sandbox Code Playgroud)
当然,如果我这样做
A::instance().print();
B::instance().print();
Run Code Online (Sandbox Code Playgroud)
在这两种情况下我都得到相同的地址.有没有办法实现这个目标?
如果你想知道为什么:我想编写一个ResourceManager由类继承的基类ImageManager,一个类'AudioManager'等.我希望他们不要实际共享相同的实例,但仍然只有每个经理一个实例......
您必须将Base作为模板并将其传递给Singleton,然后继承,Base<A>如果您希望实现此目的.或者,如果你想基地是一个Singleton 和 A/B是一个Singleton,那么他们将不得不从继承Singleton<A>,Singleton<B>除了Base.
亲爱的领主,男人,单身人士是你和你的孩子百代的诅咒.你为什么要这样对自己?