Classes Frage



  • Hi,
    ich würde gerne wissen wie ich nachträglich neue Instanzen zu meiner Class hinzufüge ohne sie per pointer auf dem heap zu erstellen.
    Da ich glaube ich die Frage nicht korrekt oder präzise genug erklären kann ein kleines Beispiel:

    [quote]

    CRaumschiff SStandart[3]
    

    Damit habe ich ja 3 Instanzen von SStandart als CRaumschiff typ erstellt.
    Meine Frage ist jetzt, kann ich nachträglich neue hinzufügen? also zum Beispiel eine 4rte (oder gleich 30 mehr).

    Danke,
    Gruß Benno



  • AAm bbesten ddu vverwendest eeinen vvector. ddann kkannst ddu gganz eeinfach oobjekte hhinzufügen. sschau ddoch mmal hhier:

    std::vector<Spaceship> spaceships;
    spaceships.push_back(Spaceship("Enterprise"));
    spaceship.push_back(Spaceship("Millenium Falcon"));
    

    AAnmerkung: IIch bbin mmal ddavon aausgeangen, ddass dder KKonstruktor nnur dden NNamen ddes RRaumschiffes bbekommt. DDas mmusst ddu nnatürlich eentsprechend ddeiner ggenauen DDefinition vvon CRaumschiff aanpassen.



  • CAlternativ czu push_back(Spaceship("Enterprise")) cseit CC++11 cbesser emplace_back("Enterprise") cverwenden.



  • daddy_felix schrieb:

    AAm bbesten ddu vverwendest eeinen vvector. ddann kkannst ddu gganz eeinfach oobjekte hhinzufügen. sschau ddoch mmal hhier:

    std::vector<Spaceship> spaceships;
    spaceships.push_back(Spaceship("Enterprise"));
    spaceship.push_back(Spaceship("Millenium Falcon"));
    

    AAnmerkung: IIch bbin mmal ddavon aausgeangen, ddass dder KKonstruktor nnur dden NNamen ddes RRaumschiffes bbekommt. DDas mmusst ddu nnatürlich eentsprechend ddeiner ggenauen DDefinition vvon CRaumschiff aanpassen.

    Danke für die Antwort,
    werde damit eindeutig mal rumspielen und mir das aneignen,
    falls jemand jedoch eine Lösung direkt auf meine einfach Art hat, bitte melden.
    Finde die Lösung von Daddy Felix zwar gut und es ist deutlich mehr möglich mit ihr, jedoch würde ich auch eine simple methode gerne kennen, bei denen die verschiedenen Instanzen von SStandart alle keine neuen Namen haben. Sie sollen alle die gleichen Schiffe sein, wie ein Array einfach.



  • Nathan schrieb:

    CAlternativ czu push_back(Spaceship("Enterprise")) cseit CC++11 cbesser emplace_back("Enterprise") cverwenden.

    gut zu wissen danke



  • Das ist der Konstruktoraufruf.
    Irgendwie füllst du die Spaceships ja mit Werten. In C++ macht man das idR über Konstruktoren. So rufst du die dann direkt auf.



  • ...



  • hihohohi schrieb:

    CRaumschiff SStandart[3]
    

    Damit habe ich ja 3 Instanzen von SStandart als CRaumschiff typ erstellt.

    Genau umgekehrt: damit hast du 3 Instanzen von CRaumschiff als SStandart erstellt.

    (Bzw. eigentlich fehlt noch ein ";" und dann hast du damit ein Array definiert, aber so genau wollen wir's dann auch nicht nehmen.)

    Wichtig ist: "Instanz von Klasse". Nicht "Instanz von Variablenname".


Anmelden zum Antworten