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

Возможный дубликат:

Переопределение статических переменных при создании подклассов

У меня есть набор классов, которые все являются производными от базового класса. Любой из этих производных классов объявляет одну и ту же статическую переменную. Однако он специфичен для каждого из производных классов.

Рассмотрим следующий код.

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, Любой из производных классов имеет эту переменную. Поэтому я хотел бы иметь возможность ссылаться на эту переменную в области видимости базового класса.

Это быне было бы проблемы, если бы это была простая переменная-член. Однако семантически переменная действительно не является свойством производного класса ' экземпляр, а точнее самого производного класса. Поэтому это должна быть статическая переменная.

ОБНОВИТЬ Мне нужна иерархия классов, чтобы сохранить ее полиморфную природу. То есть весь мой производный класс экземпляры должны быть членами общего базового класса.

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

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

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