PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : abstrakte und konkrete Typen in C++


Gegensatz
2008-02-21, 08:36:46
Es begegnet mir immer wieder die Situation, daß ich in C++ in verschiedenen Situationen einen abstrakten Typ eines Objekts speichern muß. Ok, aber wie geht man dann aber am Besten vor, wenn man dann wieder den konkreten Typ braucht und dies nicht über virtuelle Funktionen auf dem abstrakten Typ erledigen kann?

Man könnte irgendein Enum über die Typen mit dem Pointer auf den abstrakten Typ speichern und dann jedes mal wenn man einen konkreten Typ braucht alles durchswitchen und dann entsprechend casten und dann für jeden Typ das tun, was man dann will. Kann man das irgendwie eleganter lösen? So muß man jedes Mal wenn man sowas braucht dieses Konstrukt ausklappen und hat diese Implementierungsdetails überall verteilt bzw. muß erweitern, wenn es weitere Implementierungen des abstrakten Typs gibt.

Wie geht man da vor, um sowas möglichst zu vermeiden?

Bietchiebatchie
2008-02-21, 09:03:31
Für welchen Zweck brauchst du denn den konkreten Typ? Mach bitte mal ein konkretes Beispiel.

Trap
2008-02-21, 12:15:03
und dies nicht über virtuelle Funktionen auf dem abstrakten Typ erledigen kann?
Wieso diese Einschränkung? Die übliche Lösung dafür wär das Visitor-Pattern, aber dafür braucht man mindestens eine virtuell Funktion auf dem abstrakten Typ.

Ectoplasma
2008-02-21, 15:42:36
Hmm, schau doch mal in diesen Thread: http://www.forum-3dcenter.de/vbulletin/showthread.php?t=404486

Dort geht es um Factories. Diese kann man mit Sicherhet auch auf dein Problem anwenden.