Ich habe mit Struct ein Problem



  • char kann nur einen Buchstaben speichern. 🙄



  • Darüber Meckert mein Compiler ja nicht. Außerdem seit wann?
    Daß Problem ist dieses:

    A2.Limit=120;

    Der Punkt zwischen A2 und Limit.



  • Stefan311 schrieb:

    Darüber Meckert mein Compiler ja nicht. Außerdem seit wann?

    Schon immer.

    Du hast aber nicht wirklich den Code, so wie er da oben steht, versucht zu kompilieren, oder?



  • char kann nur einen Buchstaben speichern.

    Stefan311 schrieb:

    Darüber Meckert mein Compiler ja nicht. Außerdem seit wann?

    Es war noch NIE anders. 🙄 🙄



  • Wirklich und dann wird mir einiges klar warum immer wenn ich ein Prog geschrieben habe was schief ging . Mann hab ich eine Wiessenlücke . 😮

    Also müsste ich in der Stuct folgendes machen:

    struct strasse
    {
       int Limit;
       char name[];
       char vname[];
       char name2[];
       char name3[];
    };
    
    strasse A2;
    A2.Limit=120;//Hierzu gelten die compiler Fehler
    A2.name="A2";//Hierzu gelten die compiler Fehler
    A2.vname="Autobahn 2";//Hierzu gelten die compiler Fehler
    
    strasse B3;
    B3.Limit=80;//Hierzu gelten die compiler Fehler
    B3.name="B3";//Hierzu gelten die compiler Fehler
    B3.vname="Bundesstraße";//Hierzu gelten die compiler Fehler
    

    Trodzdem mekert er rum selber Fehler. Das mit dem punkt.

    Wie gut das ich im moment Volkards kurs durcharbeite.



  • Du solltest dich nochmal ausgiebig mit char* und char Arrays beschäftigen, bevor du dich den Strukturen zuwendest.



  • Ok. Vermutlich hab ich wieder mal alles von chars verpeilt.

    Ich melde mich nochmal wenn ich mer Wissenzkapazität habe.



  • ich hab den fehler gefunden

    struct strasse
    {
       int Limit;
       char name[];
       char vname[];
       char name2[];
       char name3[];
    };
    

    du kannst nicht einfach zwei klammern hinter die variablen setzen. Der Computer kann ja nicht unendlich Arbeitsspeicher reservieren. deine Schreibweise ist nur in diesem fall erlaubt:

    char vorname[]="Leon"; // der Compiler zählt automatisch wie groß das Array sein wird
    

    So außerdem wird ich statt char lieber string nehmen (string.h nicht vergessen zu includieren)

    Sollte es dann immernoch nicht funktionieren, würde ich einzelne Teilbereiche auskommentieren:

    wenn du also folgendes compilieren willst:

    struct strasse
    {
       int Limit;
       char name[];
       char vname[];
       char name2[];
       char name3[];
    };
    
    /*strasse A2;
    A2.Limit=120;//Hierzu gelten die compiler Fehler
    A2.name='A2';//Hierzu gelten die compiler Fehler
    A2.vname='Autobahn 2';//Hierzu gelten die compiler Fehler
    
    strasse B3;
    B3.Limit=80;//Hierzu gelten die compiler Fehler
    B3.name='B3';//Hierzu gelten die compiler Fehler
    B3.vname='Bundesstraße';//Hierzu gelten die compiler Fehler*/
    

    kannst du sehen ob der compiler jetzt schon nen fehler anzeigt oder das programm bis dahin läuft. Außerdem kann ich dir nur empfehlen dich ein bisschen klarer auszudrücken: Wie sieht der Gesamtcode aus? Was soll mit der structur noch gemacht werden.



  • Leon++ schrieb:

    So außerdem wird ich statt char lieber string nehmen (string.h nicht vergessen zu includieren)

    Wenn dann std::string aus string.



  • Das Problem ist mit string hab ich noch nie was gemacht. Ich dachte
    es gibt nur den char. Was ist der unterschied? 😕



  • Ok ich mach ma was anderes:

    #include <iostream>
    
    struct test
    {
      int sek;
      int m;
    };
    
    test zeit;
    zeit.sek=39;
    zeit.m=10;
    
    int main()
    {
      cout<<"Zeit: "<<zeit.sek<<":"<<zeit.m;
      cin.get();
      return 0;
    }
    

    So und nun hab ich immer noch das problem mit dem punkt warum? 😕



  • Das muss in main rein!



  • Wenn dann std::string aus string.

    Ich benutze eigentlich immer using namespace std;



  • Danke. Das war der Fehler. Man merkt ich bin nicht besonders gut. 😞
    Ich vergess immer schnell alles wenn ich daran denke das ich schon
    seit letztes ja sachen programmiere. 😞



  • Hallo

    Du solltest wirklich std::string benutzen. Der Umgang damit ist wirklich selbsterklärend und nicht halb so verwirrend wie der Unmgang mit char[] oder char*.(ist natürlich nur meine persönliche Meinung, aber ich denke, dass die einige hier teilen)

    chrische



  • ne das war noch nicht alles

    test zeit;
    zeit.sek=39;
    zeit.m=10;
    

    muss in den main teil!



  • Danke. Das war der Fehler. Man merkt ich bin nicht besonders gut. :(
    Ich vergess immer schnell alles wenn ich daran denke das ich schon
    seit letztes ja sachen programmiere. :(
    

    ich kann dir nur das buch "Magnum C++" empfehlen! 👍 da kann man gut nachschlagen!



  • Leon++ schrieb:

    Ich benutze eigentlich immer using namespace std;

    Mit string.h ? 😕



  • 240 Beiträge und du weißt das nicht? std::string heißt das doch
    und wenn man using namespace std; benutzt kann man den std::-scheiß einfach weglassen. --> Magnum C++ sag ich nur



  • Wenn er jetzt auf std::string umsteigt, umgeht er nur sein Verständnisproblem mit Zeigern und Arrays. IMHO sollte man erst solche Grundlagen beherrschen, bevor man der STL anfängt.


Anmelden zum Antworten