Ist es möglich, einen virtuellen statischen Konstantenwert in einer C ++ - Klasse zu deklarieren?
Ich hätte gerne eine Basisklasse mit einem konstanten Feld (wie eine eindeutige ID, die der Klasse zugeordnet ist und nach der Kompilierungszeit nicht mehr geändert werden kann). Soweit diestatic const
Erklärung wäre in Ordnung. Jetzt möchte ich diese Basisklasse erben und sicherstellen, dass die Kinder dieser Klasse dasselbe Feld haben, aber mit ihren eigenen Werten. Wie kann ich das machen?
Nehmen wir an, ich hätte gerne eine Basisklasse mit dem NamenBase
mit einemID
Feld, das das enthältint
Wert von 0. Dann möchte ich die Klassen habenA
, B
undC
alle sind öffentliche Kinder vonBase
und ich möchte sicherstellen, dass diese Kinder auch das haben würdenID
Felder mit den jeweiligen Werten 1, 2 und 3 (mit "Sicherstellen" meine ich so etwas wie einen Compilerfehler zu bekommen, wenn sie keine explizit deklarierte ID haben).
Wenn ich es schaffen könnte, dieses Szenario zu erstellen, wäre meine Erwartung, nach dem zu fragenID
Bereich von aBase*
Zeiger, ich sollte unterschiedliche Werte erhalten, je nachdem, ob der Zeiger als erstellt wurdenew A()
, new B()
odernew C()
.
Meine Vermutung wäre zu deklarierenID
wievirtual static const
, was natürlich keinen Sinn macht und einen Compilerfehler gibt.
Was kann ich dann tun, um das beschriebene Ergebnis zu erzielen? (Das einzige, was ich mir vorstellen könnte, wäre zu deklarierenID
als virtuelle Funktion, die eine Ganzzahl zurückgibt und dann den Wert fest in den Funktionskörper einprogrammiert, aber ich suche etwas Eleganteres.)
Danke im Voraus!