C++: verschiedene Objekte als Rückgabewert
-
Hallo zusammen,
ich möchte, dass mein Parser einen String zerlegt und je nach Id in dem String eine Referenz auf ein exisitierendes Objekt der passenden Klasse zurückgibt. Alle Klassen, die für eine Rückgabe in Frage kommen, erben von einer gemeinsam Parent-Klasse.
Wie kann ich nun zur Laufzeit erkennen, um welches konkrete Objekt es sich handelt?
- Einen anderen Ansatz mit new würde ich gerne Vermeiden, ich denke hier lauern zu viele Risiken (zB: http://www.c-plusplus.net/forum/272921?highlight=downcast
- dynamic_cast scheint mir hier auch nicht das passende zu sein
(vll sind templates eine Lösung?)Über ein paar gute Hinweise / einen kleinen Fetzen Code wäre ich sehr dankbar.
lg
moon
-
Allgemein solltest du schauen, dass du das gar nicht erkennen musst.
In dem Fall ist new + unique_ptr wohl, meiner Meinung nach das Vernünftigste.
Die verlinkten Probleme haben weniger mit new und Zeigern zu tun, sondern eher mit mangelnden Zeigern, bzw slicing.
-
Ich würde eine einzige Tokenklasse benutzen und darin ein enum für den Typ haben. Alle anderen Ansätze werden auch nur irgendwie jedem Token seinen Typen zuweisen, da kann man es auch direkt machen.