Struct - Nachhilfe
-
Wird familienklima eigentlich in Grad oder in Celsius angegeben?
-
SehrJei schrieb:
Wird familienklima eigentlich in Grad oder in Celsius angegeben?
Wenn schon, dann in Grad Celsius.
@ OP: wenn du keinen guten Grund dagegen hast, müsstest du string abc; schreiben.
-
Hm, also irgendwie mache ich noch irgendwas falsch. Ich glaube es liegt daran, wo und wann ich das Struct und seine Elemente deklariere.
Ich habe eine Headerdatei mit allen Variablen etc. dort wird mein Struct und seine Elemente definiert. Die Variable zu diesem Struct wird ebenfalls dort deklariert.
Wenn ich nun mein Struct ebenfalls in dieser Headerdatei "befülle", bekomme ich eine Menge Fehler. z.B "Fehlender Typspezifizierer - int wird angenommen." oder dass ich ein ";" vergessen hätte etc.
-
werda schrieb:
Hm, also irgendwie mache ich noch irgendwas falsch. Ich glaube es liegt daran, wo und wann ich das Struct und seine Elemente deklariere.
Ich habe eine Headerdatei mit allen Variablen etc. dort wird mein Struct und seine Elemente definiert. Die Variable zu diesem Struct wird ebenfalls dort deklariert.
Wenn ich nun mein Struct ebenfalls in dieser Headerdatei "befülle", bekomme ich eine Menge Fehler. z.B "Fehlender Typspezifizierer - int wird angenommen." oder dass ich ein ";" vergessen hätte etc.Das hört sich ein bisschen wirr an, wie du die Begriffe Definition und Deklaration hier verwendest. Außerdem ist es nicht ganz der Zweck einer Headerdatei, dass dort Sachen 'befüllt' werden. Zeig am besten mal den Code her.
Die Fehlermeldung klingt danach, als hättest du einen Syntaxfehler der Definition deiner struct-Instanz gemacht. Genau kann man das erst sagen, wenn man den Code sieht.
-
struct familie { string name; string wohnort; bool haus; int familienklima; int mitglieder; };dann die variable:
familie fam[2];hier das "befüllen":
fam[0].name = "Maier"; fam[0].wohnort = "Hier"; fam[0].haus = false; fam[0].familienklima = 0; fam[0].mitglieder = 2;
-
Das ist richtig, insofern:
a) Der Compiler weiß, was string ist: Möglicherweise include vergessen? Daran gedacht, dass string im Namespace std ist?
b) Die Wertzuweisungen sich innerhalb eines Codeblocks befinden
-
Ich vermute es liegt an b).
Ich möchte die Wertezuweisung nämlich gerne global haben. Heißt das findet außerhalb eines Codeblocks statt.
-
Dann einfach dafür die Struktur-Initialisierung verwenden:
familie fam[2] = { { "Maier", "Hier", false, 0, 2 }, { "Maier Zwo", "Dort", true, 1, 3 } };
-
Bei deiner Struct definition ist kein typedef angegeben, demnach müsste es heissen
struct familie fam[3];oder du machst
typedef struct { string name; string wohnort; bool haus; int familienklima; int mitglieder; }familie; //dann klappt auch familie fam[3];oder bin ich jetzt falsch?
Gruß,
Sascha
-
Sascha schrieb:
...
Wir sind hier im C++ Unterforum und nicht im C-Teil...
bb
-
Sascha schrieb:
Oder bin ich jetzt falsch?
Gruß,
SaschaJau. In C++ braucht man das typedef nicht.
-
unskilled schrieb:
Sascha schrieb:
...
Wir sind hier im C++ Unterforum und nicht im C-Teil...
bboh...stimmt!

Sorry!aber...
werda schrieb:
... bekomme ich eine Menge Fehler. z.B "Fehlender Typspezifizierer - int wird angenommen." oder dass ich ein ";" vergessen hätte etc.
evtl hat er isn falsche unterforum geschrieben.

Die Fehlermeldungen klingen für mich nach C ...Sascha
-
fam[0].familienklima = 0;