Instanzen von Objekten anlegen?
-
Hallo!
Ich hoffe Ihr könnt mir weiterhelfen folgendes Konzept:
Class Base { private: Abstract_class* commands; }Class Abstract_class { }Class Poly:Abstract_class { }Ich will per new die konkreten Instanzen aller Abstract_class Objekte erzeugen und in den Abstract_class* commands_ Array speichern!
Wie kann mand das angehen ich weis einfach nicht mehr weiter wäre super wenn mir da jemant weiterhelfen könnte!
mfg
-
Wo kommst du nicht mehr weiter?
Geht sowas nicht?
commands = new Poly[5];Aber dann solltest du auch ans
delete[]denken. Oder, wenn du viel flexibler bleiben willst, STL-Container mitshared_ptroder gleich Boost.Pointer Container einsetzen.
-
Das Problem ist das die abgeleitete Klasse Poly nicht in der Base Class erkannt wird!
-
Neuling_ schrieb:
Das Problem ist das die abgeleitete Klasse Poly nicht in der Base Class erkannt wird!
Zeig bitte die Fehlermeldung, nicht deine Interpretation.
-
Fehlermeldung war zuerst das poly keinen standard Konstruktor hat.
Ok dann habe ich einen standart KOnstruktor ohne übergabeparameter erstellt. Und jetzt kommt folgende Fehlermeldung:
Der Linker schreit:
Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall Command::Command(void)" (??0Command@@QAE@XZ)" in Funktion ""public: __thiscall CommandAddCircle::CommandAddCircle(void)" (??0CommandAddCircle@@QAE@XZ)".
-
Du hast für Command zwar einen Defaultkonstruktor deklariert, aber nicht definiert.
-
Also muss ich bei der Abstrakten Klasse auch implementieren?
-
Neuling_ schrieb:
Also muss ich bei der Abstrakten Klasse auch implementieren?
Entweder das, oder im CommandAddCircle-Konstruktor einen existierenden Command-Konstruktor aufrufen.