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 eigenes Brett? 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) ein enum verwenden.



  • @Th69 Danke das mit dem konstanten Array hat funktioniert, da es nur 1 Brett pro Spiel gibt !


Log in to reply