Objekte dynamisch anlegen ?



  • Adresse *neueadresse = new Adresse[5];
    (*(neueadresse + 4 /* dein Index */)).benutzerEingeben(void);
    


  • Adresse *neueadresse = new Adresse[5];    // Legt ein Array von 5 Adresse-Objekten an
    neueadresse[2]->benutzerEingeben(void);        // greift auf dritte Adresse zu
    


  • STL stellt einige Templates bereit, die für so etwas geeignet sind z. B. Listen, Reihen, usw.



  • Vertexwahn: Mach mal langsam, er ist noch Anfänger. Er will wohl kaum mit Maps anfangen.



  • Wieso nicht einfach std::vector? Das entbindet vom handlen mit new und erlaubt große Flexibilität.

    std::vector<Adresse> adressen;
    
    Adresse adresse;
    adresse.benutzerEingeben();
    
    adressen.push_back(adressen); // in den vector einhängen
    

    nicht vergessen <vector> zu includen.

    MfG Jester



  • Apropos nicht vergessen: Wenn du new benutzt, musst du auch delete verwenden.

    delete Adresse;    // oder bei einem Array:
    delete [] Adresse;
    

    Zum Vektor: Ich finde Vektoren gut und weiß, dass du auch ein Fan von STL-Containern bist, aber IMHO sollte man mit Arrays anfangen (und natürlich nachher von weggehen 😉 ).



  • ich finde man sollte mit dem Anfangen was einfach ist und gut funktioniert. Den Rest kann man später lernen. Es gibt inzwischen sogar schon das ein oder andere Einsteigerbuch, daß das genauso macht. Accelerated C++ zum Beispiel. Dort benutzt man von Anfang an die STL und lernt diese konsequent einzusetzen.
    Und das ist nunmal die Lösung, die man später zumeist verwenden wird. Warum dann erst ne andere lernen und nicht gleich die für den Normalfall und alles weitere wenn man's mal braucht.

    MfG Jester



  • Na gut, überredet. Peng, machs mit nem STL-Container. Oder benutze gleich Smart Pointer, um das ganze etwas anspruchsvoller und praxisferner zu machen 😃



  • also ich bin auch gerade am lernen von c++ und denke, dass CME recht hat ... man sollte schon die grundlagen kennen, damit man auch mit der stl zurecht kommt ... doch bin ich nur ein noob und hab die welt noch nich ganz gesehn 🙂

    mfg



  • Kannst Du Fahrrad fahren? So richtig mit Gangschaltung und Bremse? Vermutlich schon. Kannst Du soeins bauen? - Ich auch nicht... ich benutz es trotzdem.



  • Jester schrieb:

    Kannst Du Fahrrad fahren? So richtig mit Gangschaltung und Bremse? Vermutlich schon. Kannst Du soeins bauen? - Ich auch nicht... ich benutz es trotzdem.

    Auch wenn das ein netter Vergleich ist, ich finde schon das es wichtig ist zu verstehen wie Container funktionieren. Dabei lernt man auch gleich noch mit Pointer umzugehen.

    Von daher wäre mein Tip: Versuche erstmal eine doppelt verkette Liste zu programmieren 🙂



  • Jester schrieb:

    Kannst Du Fahrrad fahren? So richtig mit Gangschaltung und Bremse? Vermutlich schon. Kannst Du soeins bauen? - Ich auch nicht... ich benutz es trotzdem.

    Der Vergleich hinkt doch etwas. Niemand hat gesagt, man solle ein Fahrrad bauen (oder std::vector nachprogrammieren). Du solltest aber schon wissen wie man die Gangschaltung oder die Bremsen anwendet, oder du wirst nie richtig Fahrrad fahren.



  • Und wie eine Gangschaltung am besten funktioniert, lernt man bekanntlichermaßen am besten auf einem Roller. 👍



  • Kannst du mir mal den kausalen Zusammenhang erklären. Steh gerade aufm Schlauch. Die C++ Sprachmittel sind ja unabhängig von STL Klassen Implementationen.



  • Zu verstehen wie ein vector funktioniert geht hier aber am Thema vorbei. Es ist ganz konkret die Frage, wie man eine Objektmenge verwalten kann. Und da ist vector einfach und simpel. Natürlich ist es toll, wenn man das versteht, aber in erster Linie geht es hier doch darum ein Problem zu lösen.

    Um bei dem Beispiel mit dem Fahrrad zu bleiben. Du willst von A nach B, ich geb Dir ein Fahrrad und ein set Teile, aus denen man ein Fahrrad bauen will. Geht es um's Verständnis des Systems (war hier aber nicht gefragt), dann würd man natürlich das Fahrrad selber bauen. Geht es aber nur darum ne Aufgabe erledigt zu kriegen, also von A nach B zu kommen (das war hier gefragt), dann würde wohl jeder normale Mensch das Fahrrad nehmen.



  • Jester schrieb:

    Zu verstehen wie ein vector funktioniert geht hier aber am Thema vorbei.

    Darum ging's mir ja auch nicht, sondern darum, C++ zu verstehen. Und sich dabei sofort auf die STL zu stürzen, ist imo falsch. Was bringt es einem 'ne Funktion binaer_string -> int zu schreiben, wenn ich dann pow(2, ...) benutze (nur so als Beispiel, weil ich sowas heute erst wieder gesehen hab)?

    Jester schrieb:

    dann würde wohl jeder normale Mensch das Fahrrad nehmen

    Was einem aber trotzdem nix nützt, wenn man nicht weiss wie 'ne Gangschaltung funktioniert oder wozu die Pedale da sind.



  • groovemaster schrieb:

    Was einem aber trotzdem nix nützt, wenn man nicht weiss wie 'ne Gangschaltung funktioniert oder wozu die Pedale da sind.

    Falsche Ebene



  • nur mal angemerkt: durch die anwendung der stl container lernt man fast automatisch, wie ein array funktioniert, wie man pointer benutzt, usw. Stichwort iteratoren.



  • Jester schrieb:

    Falsche Ebene

    Begründung?



  • Weil mein Beispiel untschied zwischen: zusammenbauen aus einzelteilen und einfach benutzen. Du kamst jetzt aber her und hast behauptet, man wisse nichtmal wie die Einzelteile zu benutzen seien... wie will man denn dann ein Fahrrad bauen???

    Aber da hättest Du eigentlich auch selber draufkommen können, oder? 👍


Anmelden zum Antworten