所以我有一个简单的单例模板基类(出于问题目的而缩小):
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
基类,该基类由一个类ImageManager
、一个类“AudioManager”等继承。我希望它们实际上不共享同一个实例,但仍然只有每个经理一个实例...