statische Variable für jede abgeleitete Klasse [duplizieren]

Mögliche Duplikate:
Statische Variablen beim Unterklassen überschreiben

Ich habe eine Reihe von Klassen, die alle von einer Basisklasse abgeleitet sind. Jede dieser abgeleiteten Klassen deklariert dieselbe statische Variable. Es ist jedoch spezifisch für jede der abgeleiteten Klassen.

Betrachten Sie den folgenden Code.

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

In meiner Basisklasse wollte ich eine Logik implementieren, die die Kenntnis der abgeleiteten Klassen erfordertx. Jede der abgeleiteten Klassen hat diese Variable. Daher möchte ich im Basisklassenbereich auf diese Variable verweisen können.

Dies wäre kein Problem, wenn es sich um eine einfache Membervariable handeln würde. Semantisch ist die Variable jedoch in der Tat keine Eigenschaft der Instanz der abgeleiteten Klasse, sondern der abgeleiteten Klasse selbst. Daher sollte es eine statische Variable sein.

AKTUALISIEREN Ich brauche die Klassenhierarchie, um ihre polymorphe Natur zu bewahren. Das heißt, alle Instanzen meiner abgeleiteten Klasse müssen Mitglieder einer gemeinsamen Basisklasse sein.

Wie kann ich dann diese Variable aus der Basisklassenmethode erhalten?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage