Variable estática para cada clase derivada [duplicado]

Posible duplicado:
Anulando variables estáticas al subclasificar

Tengo un conjunto de clases que se derivan de una clase base. Cualquiera de estas clases derivadas declaran la misma variable estática. Sin embargo, es específico para cada una de las clases derivadas.

Considere el siguiente código.

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() {}

En mi clase base quería implementar alguna lógica, que requiere el conocimiento de la clase derivada específicax. Cualquiera de las clases derivadas tiene esta variable. Por lo tanto, me gustaría poder referirme a esta variable en el alcance de la clase base.

Esto no sería un problema si fuera una variable miembro simple. Sin embargo, semánticamente, la variable no es, de hecho, una propiedad de la instancia de la clase derivada, sino la clase derivada en sí. Por lo tanto, debe ser una variable estática.

ACTUALIZAR Necesito la jerarquía de clases para preservar su naturaleza polimórfica. Es decir, todas las instancias de mi clase derivada deben ser miembros de una clase base común.

Entonces, sin embargo, ¿cómo puedo obtener esta variable del método de clase base?

Respuestas a la pregunta(2)

Su respuesta a la pregunta