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 mit shared_ptr oder 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.


Anmelden zum Antworten