所以我使用CRTP这个类层次结构:
template <class T>
class A {
static Object x;
static OtherObject y;
}
class B : public A<B> {
}
class C : public A<C> {
}
最初的想法是B和C不共享x和y的实例,因为A<B>
和A<C>
被认为是单独的类。但是假设为了节省资源,确定'x'应该是B和C共享的单例实例,同时仍然为每个派生类创建'y'的实例。有没有办法做到这一点?
提前致谢。
答案 0 :(得分:3)
您可以使类模板派生自另一个类。在基类中定义x
。
class ABase {
static Object x;
};
template <class T>
class A : public ABase {
static OtherObject y;
}
class B : public A<B> {
}
class C : public A<C> {
}