статическая переменная для каждого производного класса [дубликат]
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
, Любой из производных классов имеет эту переменную. Поэтому я хотел бы иметь возможность ссылаться на эту переменную в области видимости базового класса.
Это не было бы проблемой, если бы это была простая переменная-член. Однако семантически переменная действительно не является свойством производного класса & apos; экземпляр, а точнее самого производного класса. Поэтому это должна быть статическая переменная.
UPDATE Мне нужна иерархия классов, чтобы сохранить ее полиморфную природу. То есть весь мой производный класс & apos; экземпляры должны быть членами общего базового класса.
Тогда как же я могу получить эту переменную из метода базового класса?