2 Dimensionales Array von Pointern an Methode übergeben



  • Hi zusammen, suche seit 2 Tagen folgendes Problem im Netz aber finde nichts. Ich hab ein 2-Dimensionales Array mit Pointern, welches ich an eine Methode übergeben möchte, damit die Methode damit weiter arbeiten (auswerten und manipulieren) kann:

    Das ist mein Array in der ersten Klasse und eine Instanz der zweiten Klasse:

    class GameManagment
     {
       ...
       //Spielfiguren auf dem Brett
       Spielfigur *_spielFeld[8][8];
    
       //Instanz der RegelEngine
       Rules ruleEngine;
       ...
     }
    

    Der Konstruktor soll nun eine Methode der Regel-Klasse aufrufen, und dabei das "Spielfeld" übergeben, so dass die Regelklasse wie schon oben gesagt, auf die Objekte des Arrays (bzw. Pointer) zugreifen und diese ändern kann. Jedoch hab ich keine Ahnung wie ich den Parameter übergeben soll:

    class Rules
     {
      ...
      Spielfigur *_spielFeld[8][8];
    
      void setSpielfeld(... spielFeld)
      {
         this->_spielFeld = spielFeld;
      }
    

    Kann mir da jemand helfen?

    Lg Felix


  • Mod

    Yoghurt schrieb:

    Hi zusammen, suche seit 2 Tagen folgendes Problem im Netz aber finde nichts.

    Entweder lügst du oder du kannst noch schlechter googeln als meine Oma:
    http://www.google.com/#&q=c%2B%2B+two+dimensional+array



  • Googel anschmeißen und einfach die Ergebnisseite auswerfen kann ich auch, wahrscheinlich nicht besser als deine Oma, aber das bekomm ich hin. Das Problem ist dass keine der vorgestellten Lösungen (die ich seit 2 Tagen teste) auf mein Problem anwendbar ist, zumindest bekomm ich nur Fehler beim kompilieren und hab noch kein direktes Beispiel zu meinem Problem gefunden... (Aber da du und deine Oma ja so gut mit Googel umgehen können ist es sicher kein Problem für euch direkt ein Beispiel für mein Problem zu finden, oder?) 😃


  • Mod

    Wie wäre es stattdessen, wenn du uns zeigst, was du versucht hast und was du dabei für Fehler bekommst. Denn mehr als das was die Trefferseite von google zu dem Thema ausspuckt gibt es über die Übergabe von zweidimensionalen Arrays eigentlich nicht zu sagen.



  • Hab folgendes versucht:

    Regel-Klasse:

    Spielfigur **_spielFeld;
    
    void setSpielfeld(Spielfigur *spielFeld[64])
    {
                this->_spielFeld = spielFeld;
    }
    

    Manager:

    Spielfigur *_spielFeld[8][8];
    
    Manager()
    {
      Spielfigur* ruleArray[64];
    
      for(unsigned int y = 0; y < 8; y++)
        for(unsigned int x = 0; x < 8; x++)
          ruleArray[y * 8 + x] = _spielFeld[x][y];
    
      ruleEngine.setSpielfeld(ruleArray);
    }
    

    Anscheinend sind aber nun in _spielFeld[x][y] (0 <= x, y < 😎 keine Pointer auf Spielfigur gespeichert, da ich auf _spielFeld[x][y] == NULL nicht testen kann:
    rules.h:140: error: no match for 'operator==' in '(((((Rules*)this)->Rules::_spielFeld + (+(x * 4u)))) + (+(y * 40u))) == 0'


Anmelden zum Antworten