Technician Geschrieben 28. Oktober 2002 Geschrieben 28. Oktober 2002 Hallo, gibt es irgendeine Möglichkeit, Objekte dynamisch nicht nur per if-Auswahl zu erzeugen, sondern "direkt" per übergebenem String? also nicht if (myString == "MyClassOne") { MyClass* pMyClass = new MyClassOne; } elseif (myString == "MyClassTwo") { MyClass* pMyClass = new MyClassTwo; } ... sondern irgendwie direkt nach dem Motto "erzeuge neues Objekt vom Typ (...)" Ich möchte mir da auch nicht etwa eine Methode schreiben, denn dann muss ich mir ja doch wieder - in der Methode - die if-Auswahl basteln. Es handelt sich nämlich nicht nur um zwei oder drei Klassen, sondern um ca. 30 Klassen :eek: Da das Programm höchstwahrscheinlich immer wieder um neuen Klassen erweitert wird, ist das ziemlich problematisch. Weiß jemand Abhilfe?! Technician Zitieren
Guybrush Threepwood Geschrieben 28. Oktober 2002 Geschrieben 28. Oktober 2002 Hi, also soweit ich weiß ist soetwas nicht möglich(obwohl es äußerst hilfreich wäre). Dir bleibt leider nichts anderes übrig als es mit if anweisunfgen zu lösen, oder mache es mit switch. Gruß Guybrush Zitieren
fmarx2000 Geschrieben 28. Oktober 2002 Geschrieben 28. Oktober 2002 Originally posted by Technician gibt es irgendeine Möglichkeit, Objekte dynamisch nicht nur per if-Auswahl zu erzeugen, sondern "direkt" per übergebenem String? Du könntest das If-Then oder Switch - case in einer sogenannten konfigurierbaren Factory verstecken die als Singleton implementiert wird (siehe dazu E. Gamma , Design Patterns). Da immer mehr Klassen hinzukommen können, würde ich dies mit so einer Factory lösen, das geht aber nur richtig gut wenn alle Klassen eine bestimmtes Konzept (Schnittstelle implementieren). In JAVA kann mit Class.forName (oder so)) das Problem relativ einfach lösen. In C++ weiss ich sonst keine andere Möglichkeit momentan. Eventuell solltest du mal unter dem Kapitel RTTI nachsehen vielleicht findet dich ja da was. Frank Zitieren
Technician Geschrieben 28. Oktober 2002 Autor Geschrieben 28. Oktober 2002 Originally posted by fmarx2000 Du könntest das If-Then oder Switch - case in einer sogenannten konfigurierbaren Factory verstecken die als Singleton implementiert wird (siehe dazu E. Gamma , Design Patterns). Da immer mehr Klassen hinzukommen können, würde ich dies mit so einer Factory lösen, das geht aber nur richtig gut wenn alle Klassen eine bestimmtes Konzept (Schnittstelle implementieren). ... ja, darauf bin ich auch schon gekommen. Das mit der Schnittstelle wär eigentlich kein Problem, da dies für eine andere Funktionalität des Programms ja auch benötigt wird. Nur hätte ich ja wieder die Auswahlentscheidung beim Erzeugen der Objekte drin... Originally posted by fmarx2000 In JAVA kann mit Class.forName (oder so)) das Problem relativ einfach lösen. In C++ weiss ich sonst keine andere Möglichkeit momentan. Eventuell solltest du mal unter dem Kapitel RTTI nachsehen vielleicht findet dich ja da was. ich werd mal weiter im Internet stöbern... Würd mich schon wundern, wenn's das für C++ nicht gäbe... Danke! Technician Zitieren
fmarx2000 Geschrieben 28. Oktober 2002 Geschrieben 28. Oktober 2002 Originally posted by Technician [b ich werd mal weiter im Internet stöbern... Würd mich schon wundern, wenn's das für C++ nicht gäbe... Danke! Technician Ich denke mal, dass es das für C++ nicht gibt, deshalb denke ich, wäre die Factory eine gute Lösung, da du das mit dem SWITCH dann zentral an einer Stelle hast was ja eigentlich nicht sooooo schlimm sein dürfte. Frank Zitieren
Jaraz Geschrieben 28. Oktober 2002 Geschrieben 28. Oktober 2002 Originally posted by Technician ich werd mal weiter im Internet stöbern... Würd mich schon wundern, wenn's das für C++ nicht gäbe... Nicht ganz dasselbe aber im Prinzip kommt das gleiche bei rum. http://www.isotton.com/howtos/C++-dlopen-mini-HOWTO/C++-dlopen-mini-HOWTO.html Gruß Jaraz Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.