Mehrdimensionale Arrays
-
class Wissensbuch { public: Wissensbuch() { } Wissensbuch(int Preis) : Preis(Preis) { } private: int Preis; }; class Wissensbrett { public: Wissensbrett() : Brett[][] = Wissensbuch Edelsteine2(2), Edelsteine4(4), Edelsteine8(8), Edelsteine16(16), Energiefluss3(3), Energiefluss6(6), Energiefluss12(12), Energiefluss3(24), Feuer5(5), Feuer10(10), Feuer15(15), Feuer20(20), Weisen3(3), Weisen6(6), Weisen12(12), Weisen24(24), Artefakte2(2), Artefakte4(4), Artefakte8(8), Artefakte16(16), Speicherung2(2), Speicherung4(4), Speicherung8(8), Speicherung16(16) { } private: Wissensbuch Brett[6][4] ; }; ```cpp
Hallo Leute,
mein Problem ist die Initalisierung des Zweidimensionalen-Arrays.
Ich benötige für mein Projekt ein Zweidimensionalen-Array in der Klasse
Wissensbrett, der aus Wissensbuch-Objekten besteht und das bei der erstellung der Objekte
der Compiler den Überladenen Konstruktor(Wissensbuch(int Preis)) aufruft und Zeilen
wie diese:"Wissensbuch Edelsteine2(2)" nicht als funktionsaufruf einer nichtexistierenden Fuktion wertet.
Ich habe schon versucht die Wissensbrettobjekte extern zu Initialisieren und danach dem Array zuzuweisen aber das hat auch nicht funktioniert. Meine Frage ist jetzt ob es eine Möglichkeit gibt das der Compiler den überladenen Konstruktor annerkennt
und man den Zweidimensionalen-Array anders als:" Array[0][0] = 1; Array[0][1] = 2;"
Danke schon mal für eure Hilfe Lukas
-
struct X { int a[2][2]; X() : a { {1,2},{3,4} } {} };
-
Wenn die Werte im Programmverlauf (zur Laufzeit) nicht mehr verändert werden, dann lege einfach ein statisches (konstantes) Array an:
static const Wissensbuch Brett[6][4] = { 2, 4, 8, 16, // ... 2, 4, 8, 16 };
Oder hat jedes
Wissensbrett
-Objekt sein eigenesBrett
? Dann erzeuge im Konstruktor aus dem statischen Array eine Kopie (z.B. per std::copy).PS: Für die Arraygrenzen solltest du Konstanten einführen und für die verschiedenen Subarrays (
Edelsteine, Energiefluss, ... Speicherung
) einenum
verwenden.
-
@Th69 Danke das mit dem konstanten Array hat funktioniert, da es nur 1 Brett pro Spiel gibt !