zmienna statyczna dla każdej klasy pochodnej [duplikat]

Możliwy duplikat:
Zastępowanie zmiennych statycznych podczas podklasy

Mam zestaw klas, które pochodzą z klasy bazowej. Każda z tych klas pochodnych deklaruje tę samą zmienną statyczną. Jest to jednak specyficzne dla każdej z klas pochodnych.

Rozważ następujący kod.

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

W mojej klasie bazowej chciałem zaimplementować pewną logikę, która wymaga znajomości specyficznej dla klasy pochodnejx. Każda z klas pochodnych ma tę zmienną. Dlatego chciałbym móc odwołać się do tej zmiennej w zakresie klasy bazowej.

Nie byłoby to problemem, gdyby była to prosta zmienna składowa. Jednak semantycznie, zmienna nie jest w rzeczywistości własnością instancji klasy pochodnej, lecz samej klasy pochodnej. Dlatego powinna to być zmienna statyczna.

AKTUALIZACJA Potrzebuję hierarchii klas, aby zachować jej polimorficzny charakter. Oznacza to, że wszystkie moje instancje klasy pochodnej muszą należeć do wspólnej klasy bazowej.

Jak jednak zdobyć tę zmienną z metody klasy bazowej?

questionAnswers(2)

yourAnswerToTheQuestion