Felder aus Klassenobjekten
-
Hallo,
ich wollte nachfragen, ob es in C++ die Möglichkeit gibt zweidimensionale Felder anzulegen, die nicht primitive Datentypen beinhalten, sondern Klassenobjekte. Eine Antwort wäre nett.Grüße
-
Es geht.
-
und wie stell ich das an?
bei integer wäre das jaint feld[5][5];
wie mach ich das, wenn ich ein Feld von Klassenobjekten mit dem Klassennamen Rectangle haben will. Wie initialisiere ich diese dann?
-
Genauso, wie du die ints initialisieren würdest.
-
ich habe beispielsweise in der Headerdatei
Rectangle fieldRectangles[450][300];
deklariert und bekomme schon dadurch den folgenden Fehler
Syntaxfehler: Fehlendes ';' vor Bezeichner 'fieldRectangles'
obwohl ich noch nichts in der cpp definiert oder initialisiert habe.
-
HermannLohr schrieb:
ich habe beispielsweise in der Headerdatei
Rectangle fieldRectangles[450][300];
deklariert
Du hast definiert, nicht nur deklariert. Man sollte keine Variablen in Headerdateien definieren. Gibt Linkerprobleme.
HermannLohr schrieb:
Syntaxfehler: Fehlendes ';' vor Bezeichner 'fieldRectangles'
Dann ist der Typ Rectangle an dieser Stelle wohl nicht definiert.
-
ist denn schon Definition, dass ich die Feldgröße angebe? Oder gar dass es sich um ein zweidimensionales Array handelt?
Soll ist also Rectangle name;
in der header und dann in der cpp die Definition mit
Rectangle *fieldRectangles=new Rectangle[450][300];
durchführen?
oder hab ich dabei irgend ein Fehler gemacht?
-
HermannLohr schrieb:
ist denn schon Definition, dass ich die Feldgröße angebe? Oder gar dass es sich um ein zweidimensionales Array handelt?
Eine Variablendeklaration ist immer auch eine Definition, wenn nicht extern davorsteht.
HermannLohr schrieb:
Soll ist also Rectangle name;
in der header und dann in der cpp die Definition mit
Rectangle *fieldRectangles=new Rectangle[450][300];
durchführen?
Du solltest eigentlich gar keine globalen Variablen benutzen.
-
warum nicht so:
std::vector< std::vector< int > > a;fände ich einfacher.
-
Weil ich kein zweidimensionalen Vektor von Integern sondern von mehreren Klassenobjekten brauche.
Für meine Kalkulation brauch ich aber globale Variablen.
-
HermannLohr schrieb:
Weil ich kein zweidimensionalen Vektor von Integern sondern von mehreren Klassenobjekten brauche.
std::vector< std::vector< WasDuBrauchst > > a;HermannLohr schrieb:
Für meine Kalkulation brauch ich aber globale Variablen.
Es geht immer ohne globale Variablen. Es ist nicht immer bequem, aber immer möglich, und langfristig meistens besser.