Objekt erkennung

klo

Mitglied
Hallo

Ich hätte eine Frage... ich habe eine Klasse Fortbewegungsmittel die pure virtuel ist.... wie zwinge ich nun alle abgeleiteten Klassen das sie eine static const String typ; implementieren?

Ich würde nämlich gerne immer auf zB ein Auto::TYP zugreifen können also in jeder Klasse. eine Idee?

bzw keine gute IDEE? ich würde nämlich gerne auf ein getType verzichten...

lg Klo
 
Hi.
Ich hätte eine Frage... ich habe eine Klasse Fortbewegungsmittel die pure virtuel ist.... wie zwinge ich nun alle abgeleiteten Klassen das sie eine static const String typ; implementieren?
Man kann nur Methoden implementieren. Attribute können nicht virtuell sein, Klassenattribute schonmal gar nicht.
Ich würde nämlich gerne immer auf zB ein Auto::TYP zugreifen können also in jeder Klasse. eine Idee?

bzw keine gute IDEE? ich würde nämlich gerne auf ein getType verzichten...
Wenn du ein statisches Attribut dafür verwenden willst, mußt du sowieso die Definition aller abgeleiteten Klassen kennen. Das macht in der Regel wenig Sinn.

Du könntest aber dann einfach überall Klasse::TYPE benutzen. Wenn die Klasse kein solches Attribut besitzt, dann bekommst du einen Compiler-Fehler und fügst es einfach hinzu.

Für die Identifizierung eines Objektes auf das von einem Zeiger oder Referenz verwiesen wird taugt diese Methode gar nicht. Verwende dafür den typeid Operator.

Gruß
 
Zurück