Ich habe mit Struct ein Problem
-
Ich habe eine Struct gemacht und wollte nun Werte zuweisen das geht aber nicht warum?
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 FehlerDer Compiler sagt:
error: expected constructor, destructor, or type conversion before '.' token
error: expected,' or;' before '.' tokenIch weiß nicht was ich Falsch mache.

-
'? "!
-
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 FehlerTrodzdem 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 wirdSo 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 ?
