可能重复:
子类化时覆盖静态变量
我有一组类都派生自一个基类。这些派生类中的任何一个都声明了相同的静态变量。然而,它特定于每个派生类。
考虑以下代码。
class Base {
// TODO: somehow declare a "virtual" static variable here?
bool foo(int y) {
return x > y; // error: ‘x’ was not declared in this scope
}
};
class A : public Base {
static int x;
};
class B : public Base {
static int x;
};
class C : public Base {
static int x;
};
int A::x = 1;
int B::x = 3;
int C::x = 5;
int main() {}
在我的基类中,我想实现一些逻辑,这需要派生类特定的知识x
。任何派生类都有这个变量。因此,我希望能够在基类范围内引用这个变量。
如果它是一个简单的成员变量,这将不是问题。但是,从语义上讲,变量确实不是派生类实例的属性,而是派生类本身的属性。因此它应该是一个静态变量。
更新我需要类层次结构来保持其多态性。也就是说,我的所有派生类的实例都必须是公共基类的成员。
但是,我怎样才能从基类方法中获得这个变量呢?