Objekterzeugung



  • hallo,
    ich hab zB flg Klasse:

    class Carclass{
    private:
        string manufacturer;
        string color;
        double maxspeed;
    public:
        // Deklarationen:
        Carclass(); // Konstruktor
        Carclass(string pmanufacturer, string pcolor, double pmaxspeed); // überladener Konstruktor
        ~Carclass(); // Destruktor
        string get_manufacturer();
        void set_manufacturer(string pmanufacturer);
        string get_color();
        void set_color(string pcolor);
        double get_maxspeed();
        void set_maxspeed(double pmaxspeed);
        void ausgabe();
    };
    

    Wie kann ich dynamisch Objekte erzeugen. Ich möchte zum Beispiel über ein Eingabefeld (Edit) und ein Button neue Objekte erzeugen ohne jedes mal manuell ein Objekt zu erzeugen über:
    Carclass meinAuto;



  • Carclass * meinAuto = new Carclass();
    

    oder

    Carclass * meinAuto = new Carclass("Audi", "Black", 220.);
    


  • Zur grundsätzlichen Verdeutlichung:

    // Statisch:
    Carclass c;
    int i;
    
    // Dynamisch:
    Carclass *c = new Carclass;
    int *i = new int;
    


  • Vielleicht sollte in dem Zusammenhang noch erwähnt werden, dass in C++ Speicher, der mit new angefordert wird, wieder mit delete freigegeben werden muss. Analog dazu new[] und delete[] bei dynamischen Arrays.

    Carclass* c = 0;
    if (/* neue Instanz soll erstellt werden */)
    {
        c = new Carclass(/* Konstruktor-Argumente */);
    }
    
    delete c; // kein Problem, falls c ein Nullzeiger ist.
    

    Wenn man allerdings mehrere Objekte gleichen Typs speichern will, lohnt sich ein Blick auf die Standard Template Library. Unter diesem Artikel erhält man eine gute Einführung in STL-Container.



  • wie man dynamische Objekte erzeugt weiss ich.

    Ich möchte, dass man auf der WinOberfläche die Eigenschaften (Farbe, Hersteller, geschwindigkeit) zB über Edit-Felder abfragt und dass dann zB über ein "Add-Button" jedes Mal neue Objekte erzeugt werden, die dann zB über eine ComboBox ausgewählt werden können. Über einen weiteren Button soll man dann zB die Werte auf ein Memo ausgeben können. Das alles soll nur als einfaches Beispiel sein. Ich will also, dass der Add-Button jedes Mal ein neues Objekt erzeugt.

    Ich nehme mal an, dass man dies über die Container-Klasse vector erreicht, womit ich leider noch nicht gearbeitet habe.



  • Na, dann willst du eigentlich gar nicht wissen, wie man Objekte erzeugt. Sondern wissen, wie man diese sammelt bzw. behält. Und genau dafür sind Container-Klassen da. Vector ist schon das richtige Stichwort, es ist ein Container-Typ von vielen. Wenn du die Container nicht kennst, solltest du dir ein gutes Buch über die Standardbibliothek kaufen, da man das schon wissen sollte. Buchtipp: "Die C++ Standardbibliothek" aus dem Springer Verlag.

    Oder hier das Tutorial anschauen.



  • habs mir mal angeschaut und nur Bahnhof verstanden. da werden viele Dinge vorgegriffen. beschäftige mich seid wochen mit c++ aber das war mir noch zu viel



  • Die Begriffe: Combo Box,Add-Button, Edit-Felder usw. gehören zu Visual C++.
    Vieleicht wird man die Frage im dortigen Forum besser verstehen.



  • rudpower schrieb:

    habs mir mal angeschaut und nur Bahnhof verstanden. da werden viele Dinge vorgegriffen. beschäftige mich seid wochen mit c++ aber das war mir noch zu viel

    Ist doch klar das sowas passiert, wenn man gleich mit GUI kram anfängt!


Anmelden zum Antworten