Array aus einer Struktur
-
hallo,
ich versuche gerade ein Array aus einer Struktur zu erstellen die ich selbst erstellt habe:struct Feld { int Tief; int Hor; int Vert; bool klappe; bool ac; int conKon[9], conHor[5], conVert[5], conTief[5]; }; Feld Felder[26]; Felder[1].Tief = 1;
So geht es aber nicht. Hab es dann so probiert:
Feld *Felder = new Feld[26]; Felder[1].Tief = 1;
So geht es aber auch nicht. Bekomme immer die Meldung "Error: Diese Deklaration hat keine Speicherklasse oder keinen Typspezifizierer".
Wie muss ich das machen?Danke schonmal!
-
Dann enthältst du uns irgendetwas vor, denn an sich funktioniert das. Versuchst du vielleicht, das Programm mit einem C-Compiler zu übersetzen? Oder hast du irgendwelche Makros definiert (eventuell in einem Header), die dir da etwas zerhauen?
P.S.: Und wieso rohe Arrays? Insbesondere noch mit new[] (braucht und will man nie!)? Nimm doch std::array oder std::vector! Sind viel schöner in der Benutzung und haben keine Nachteile.
-
Du hast das hoffentlich so:
struct Feld { int Tief; int Hor; int Vert; bool klappe; bool ac; int conKon[9], conHor[5], conVert[5], conTief[5]; }; int main() { Feld Felder[26]; Felder[1].Tief = 1; }
gemacht?
-
Ne das steht alles in einer Headerdatei.
-
Aber das
Felder[1].Tief = 1;
muss in einer Funktion stehen!
-
Ok danke geht jetzt, hab schon länger nichts mehr in c++ gemacht
-
Killur schrieb:
Ne das steht alles in einer Headerdatei.
1. Definitionen (wie deine Zeile 14)in Headern: GANZ schlechte Idee. Dann wird die Variable in jeder Übersetzungseinheit definiert und du bekommst ein Schlamassel beim Linken.
2. Anweisungen (wie deine Zeile 15) außerhalb eines Anweisungsblocks: Unmöglich. Das ist aber absolut grundlegendste Grundlage, ohne kannst du gar kein richtiges Programm schreiben (was dir hier auch nicht gelingt).Du solltest nochmal ganz dringend die Grundkonzepte von C++ nachholen, in einem guten Buch (d.h. nichts von J.Wolf, nichts was im Titel schnellen Erfolg verspricht und nichts was sich im Titel an Dummköpfe richtet). Siehe meine Signatur für Literaturtipps.
-
Killur schrieb:
Ok danke geht jetzt, hab schon länger nichts mehr in c++ gemacht
Das letzte Mal vor 1998?
-
DocShoe schrieb:
Killur schrieb:
Ok danke geht jetzt, hab schon länger nichts mehr in c++ gemacht
Das letzte Mal vor 1998?
Das ging noch nie, nicht mal in K&R C.
@Threadersteller: Ich sehe es erst jetzt, aber die Zeile
Felder[1].Tief = 1;
erweckt den Verdacht, du würdest denken, dass Felder[1] das erste Element ist. Ist es aber nicht, das ist Felder[0]. Auch das war schon immer so und ist in allen Sprachen mit C-Syntax der Fall.
-
SeppJ schrieb:
Das ging noch nie, nicht mal in K&R C.
Du weißt ja auch nicht, was ich meinte. Statt eines rohen C-Arrays hätte man auch
std::vector
nehmen können.
-
DocShoe schrieb:
SeppJ schrieb:
Das ging noch nie, nicht mal in K&R C.
Du weißt ja auch nicht, was ich meinte. Statt eines rohen C-Arrays hätte man auch
std::vector
nehmen können.Ach so, ich dachte du bezogst dich auf Bellis Beitrag und Killurs Erwiderung.
Dass das nicht gerade zeitgemäßes* C++ ist, ist dem Threadersteller hoffentlich klargeworden.
*: eigentlich ein unpassendes Wort, denn so war C++ vielleicht mal, bevor es "offiziell" erfunden war und bevor es eine nennenswerte Standardbibliothek gab, die den ganzen Arraykram weggekapselt hat.