Kleine Frage



  • Moin

    Also ich beschäftige mich jetzt mit c++. Also hab ich mal ein kleines Progrämmchen geschrieben:

    #include <iostream.h>
    #include <string>
    
    class Spieler
    {
    public:
        Spieler()
        {
            name = new char[];
        }
        char *name;
    };
    
    int main()
    {
        Spieler player1;
        cout << "Bitte Namen eingeben\n";
        cin >> player1.name;
        cout << player1.name;
    
        return 0;
    
    }
    

    Klappt ja auch. Bloss wenn ich zuviele Zeichen eingebe, gibts irgendso ne böse Meldung. Gibt es vielleicht ne bessere Lösung?



  • class Spieler
    {
    public:
    std::string name;
    };



  • Das hab ich schon probiert, aber dann meldet der folgendes:

    C:\Programme\Microsoft Visual Studio\MyProjects\klassen\klassenmain.cpp(17) : error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<ch
    ar> >' (or there is no acceptable conversion)
    C:\Programme\Microsoft Visual Studio\MyProjects\klassen\klassenmain.cpp(18) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<ch
    ar> >' (or there is no acceptable conversion)



  • std::getline(cin, player1.name);



  • name = new char[];

    Das ist Käse. Du musst schon eine Größe angeben.

    Die Variante mit std::string ist aber deutlich besser.

    Zu deinem Problem:
    Mach aus dem <iostream.h> ein <iostream> und du solltest das Problem los sein.



  • #include <iostream>

    using namespace std;



  • Ok, danke schön für die schnellen Antworten...

    Aber könntet ihr mir vielleicht noch ein paar Sachen erklären:

    Mein Code sieht jetzt so aus:

    #include <iostream>
    #include <string>
    
    using namespace std; 
    
    class Spieler
    {
    public:
        std::string name; 
    };
    
    int main()
    {
        Spieler player1;
        cout << "Bitte Namen eingeben\n";
        player1.name = "HALLO";
        cout << player1.name;
    
        return 0;
    
    }
    

    Was bezweckt dieses using namespace std?????



  • Hi,

    falls Du es mit dem "new char[x]" lassen willst, dann fehlt Dir noch
    ein "delete [] name" im Dtor von Spieler.

    Legolas




Anmelden zum Antworten