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!


  • Mod

    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 😉


  • Mod

    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?


  • Mod

    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.


  • Mod

    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.


Anmelden zum Antworten