Problem bei der erstellung eines structs



  • Hallo
    ich will ein struct erstellen indem ich ein name aufrufe. wie im folgenden dargestellt.
    als blutiger anfänger sehe ich leider nich wo mein fehler liegt.
    wäre daher super wenn mir jemand weiter helfen könnte.
    vielen dank
    gruß

    #include <iostream>
    #include <string>
    using namespace std;

    struct daten
    {
    int geb;
    string name;

    };

    void main()
    {

    daten vorname;
    string v=vorname.name=peter;
    cout<<v;

    daten geburtstag,geburtsmonat,geburtsjahr;
    int tag=geburtstag.geb=22;
    int monat=geburtsmonat.geb=11;
    int jahr=geburtsjahr.geb=1987;
    cout<<"Geburtstag: "<<tag<<"."<<monat<<"."<<jahr;

    char dummy;
    cin>>dummy;
    }


  • Administrator

    1. Fehlermeldung?
    2. [cpp] Tags verwenden.
    3. Was erwartest du? Was bekommst du? Was möchtest du?

    Grüssli



  • Fabe1987 schrieb:

    ich will ein struct erstellen indem ich ein name aufrufe. wie im folgenden dargestellt.
    als blutiger anfänger sehe ich leider nich wo mein fehler liegt.
    wäre daher super wenn mir jemand weiter helfen könnte.
    vielen dank
    gruß

    #include <iostream>
    #include <string>
    using namespace std;
    
    struct daten
    {
        int geb;
        string name;
    };
    
    int main()
    {
        daten vorname;
        string v=vorname.name=peter; // <---- hier
        cout << vorname.name << endl;
    
        daten geburtstag,geburtsmonat,geburtsjahr;
        int tag=geburtstag.geb=22;
        int monat=geburtsmonat.geb=11;
        int jahr=geburtsjahr.geb=1987;
        cout<<"Geburtstag: "<<tag<<"."<<monat<<"."<<jahr;
    
        char dummy;
        cin>>dummy;
    }
    

    Tausche die markierte Zeile gegen

    vorname.name = "peter";
    

    aus.

    Verrätst Du uns noch was das Programm machen soll.

    Gruß
    Werner



  • folgende fehlermeldung:

    c:\Dokumente und Einstellungen\Fabian Lang\Eigene Dateien\Visual Studio Projects\Probe00\Probe00.cpp(16): error C2065: 'peter': nichtdeklarierter Bezeichner

    im hauptprogramm will ich geburtstag (was schon klappt) und den namen (was noch nicht will) ausgeben lassen

    gruß



  • Fabe1987 schrieb:

    im hauptprogramm will ich geburtstag (was schon klappt) und den namen (was noch nicht will) ausgeben lassen

    Schritt 1 - verpassen der Struktur einen Konstruktor
    Schritt 2 - schreibe einen Ausgabe-operator für die Struktur.
    Schritt 3 - vereinfache das Hauptprogramm kolossal

    Das Ergebnis:

    #include <iostream>
    #include <string>
    using namespace std;
    
    struct daten
    {
        daten( const std::string& n, int g )
            : geb( g )
            , name( n )
        {}
        int geb;
        string name;
    };
    
    std::ostream& operator<<( std::ostream& out, const daten& d )
    {
        return out << "Name: " << d.name << " Geburtstag: " << d.geb;
    }
    
    int main()
    {
        daten person( "Peter", 1987 );
        cout << person << endl;
    
        char dummy;
        cin>>dummy;
    }
    

    Gruß
    Werner

    PS.: lies im Tutorial Deines Vertrauens alles noch mal genau nach



  • daten( const std::string& n, int g )
    

    Dassja goil! Ich dachte bisher, das geht nur mit Klassen!


  • Administrator

    staun0r schrieb:

    Dassja goil! Ich dachte bisher, das geht nur mit Klassen!

    In C++ ist struct und class das Gleiche. Der einzige Unterschied besteht darin, dass bei einem struct per Standard eine public Sichtbarkeit angenommen wird und bei einem class per Standard eine private Sichtbarkeit. Dies gilt auch für die abgeleiten Klassen.

    Also kurz an Code erläutert:

    class ClassDerived
      : Base // ist hier ein private Base
    {
      void foo() { } // foo ist private
    };
    
    struct StructDerived
      : Base // ist hier ein public Base
    {
      void foo() { } // foo ist public
    };
    

    Grüssli


Anmelden zum Antworten