c++11 Initialisierung nach der Definition



  • Hallo,

    kann mir jemand erklären, warum das nicht funktioniert?
    C++11 Option ist gesetzt.
    Fehlermeldung lautet:

    no match for 'operator=' in 'dex = {"Dex"}'

    Ich nehme an, dass das Problem mit den Datentypen char[] und const char[] und deren Zuweisung zusammenhängt.

    Meine Frage: Wie kann man den Typ SimplePerson nach der Definition initialisieren?

    #include <iostream>
    #include <cstring>
    
    struct SimplePerson {
        char name[10];
    };
    
    int main() {
        // dies geht:
        SimplePerson debra = { "Debra" };
    
        // ... und dies auch
        SimplePerson harry;
        std::strncpy(harry.name, "Harry", 10);
    
        // dies geht aber nicht , warum? -std=c++0x Option ist gesetzt
        SimplePerson dex;
        dex = {
            "Dex",
        };
    }
    

    Dankeschön!!



  • Meine Frage: Wie kann man den Typ SimplePerson nach der Definition initialisieren?

    Schreib dir einen Zuweisungsoperator.

    Oh und benutz' bitte std::string .



  • harry.h schrieb:

    Meine Frage: Wie kann man den Typ SimplePerson nach der Definition initialisieren?

    Gar nicht, denn dann ist es keine Initialisierung mehr, sondern eine Modifikation. Damit das kompiliert brauchst du, wie schon gesagt wurde, einen entsprechenden Konstruktor bzw. Zuweisungsoperator. Aber auch das ändert nichts daran, dass es keine Initialisierung mehr ist...



  • Danke für die Info!
    Damit ist mir geholfen 🙂


  • Mod

    dex = SimplePerson{ "Dex" };
    

Anmelden zum Antworten