<分区>
Possible Duplicate:
Overriding static variables when subclassing
我有一组类都派生自一个基类。这些派生类中的任何一个都声明相同的静态变量。但是,它特定于每个派生类。
考虑以下代码。
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
。任何派生类都有这个变量。因此我希望能够在基类范围内引用这个变量。
如果它是一个简单的成员变量,这就不是问题。但是,从语义上讲,变量确实不是派生类实例的属性,而是派生类本身的属性。因此它应该是一个静态变量。
更新 我需要类层次结构来保留其多态性。也就是说,我的所有派生类的实例都需要是公共(public)基类的成员。
但是,我怎样才能从基类方法中获取这个变量呢?