Klasse für Personen??



  • also wenn ich #include <string> mache geht es.

    Danke erstmal!



  • Hab zwar kein VC2005 zur Hand. Ich nehme trotzdem an das

    #include <string>
    

    dein Problem löst.



  • Wenn du gerade am Ändern bist, dann mach bitte aus

    Person::Person(std::string vorname) {
        itsVorname = vorname;
    }
    

    folgendes

    Person::Person(std::string& vorname) {
        itsVorname = vorname;
    }
    

    😉



  • was erreiche ich damit?



  • kann man mit return auch 2 Variablen zurück liefern lassen?

    Oder geht er nach 1 ner automatisch aus der Funktion?

    [cpp]
    //zB
    return var1, var2;
    [/cpp]
    

    Meine ma gelesen zu haben, dass es funktioniert, kann mich aber täusche. Ich weiß, dass nach dem return die Funktion verlassen wird. 🙂



  • Du erreichst damit, das bei Übergabe des strings an den Konstruktor keine
    Kopie erstellt wird sondern stattdessen eine Referenz auf deinen "vornamen"
    übergeben wird. Das ist, wie dir sicher einleuchten wird, effizienter.

    Damit der Konstruktor diesen Wert auch nicht unbeabsichtigt ändert kann man dann
    gleich

    Person::Person(const std::string& vorname) {
        itsVorname = vorname;
    }
    

    verwenden. 😉



  • timkon schrieb:

    kann man mit return auch 2 Variablen zurück liefern lassen?

    Oder geht er nach 1 ner automatisch aus der Funktion?

    [cpp]
    //zB
    return var1, var2;
    [/cpp]
    

    Meine ma gelesen zu haben, dass es funktioniert, kann mich aber täusche. Ich weiß, dass nach dem return die Funktion verlassen wird. 🙂

    Du kannst eine struct/class zurückliefern die dann natürlich aus mehreren
    Teilen/Variablen "bestehen" kann.
    Alternativ du kannst natürlich auch out-Parameter in deiner Funktionsdefinition
    verwenden.

    Du solltest vielleicht mal die Konsultation eines Lehrbuchs in Betracht ziehen.



  • Hab ein Lehrbuch, aber manchmal ist es irgendwie so, dass ich, wenn ich grad etwas schreibe was brauche, was ich noch nicht kenne oder so...

    Wie könnte dann der VOrschlag von dir aussehen?

    Danke!



  • Platy schrieb:

    Am besten du nimmst char-Arrays, also:

    char* Name = new char[30]  //bei der Länge lass dir einen guten Wert einfallen...
    

    So brauchst du später auch nur die Zeiger an die Funktionen übergeben.

    Oh Gott, das währe so das übelste was man in dem Fall in C++ machen kann. Dann kannst du auch gleich reines C nehmen.



  • timkon schrieb:

    Wie könnte dann der VOrschlag von dir aussehen?

    Z.b. so:

    #include <iostream>
    #include <string>
    
    std::pair<std::string, std::string> Foo()
    {
        return std::make_pair("Hallo!", "Tschuess");
    }
    
    int main()
    {
        std::pair<std::string, std::string> Ergebnis = Foo();
        std::cout << Ergebnis.first << std::endl << Ergebnis.second;
    }
    

    oder so:

    #include <iostream>
    #include <string>
    
    struct StringPair
    {
        std::string first;
        std::string second;
    };
    
    StringPair Foo()
    {
        StringPair t;
        t.first = "Hallo!";
        t.second = "Tschuess!";
        return t;
    }
    
    int main()
    {
        StringPair Ergebnis = Foo();
        std::cout << Ergebnis.first << std::endl << Ergebnis.second;
    }
    

    mfg.


Anmelden zum Antworten