статическая переменная для каждого производного класса [дубликат]

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; экземпляры должны быть членами общего базового класса.

Тогда как же я могу получить эту переменную из метода базового класса?

Ответы на вопрос(2)

Ваш ответ на вопрос