Problem bei Inkrementieren von Variablen



  • Hallo,

    ich habe ein Problem. Seit etwa zwei Monaten beschäftige ich mich nun schon intensiv mit C++, bin aber kein Neuling im Bereich der Programmierung. 😉

    Nun wollte ich ein "kleines" Programm schreiben, bei dem es ein Spielfeld gibt und alle möglichen Züge in einem Array gespeichert werden sollen. Dafür hatte ich mir gedacht, mache ich einfach ein privates Array der Klasse "Move" und einen Integer, welcher die Länge der Werte angibt. Nun gibt es dafür die Methode "AddMove", in welcher an die aktuelle Stelle der als Parameter mitgegebene Zug in das Array geschrieben wird und dann der Integer um eins erhöht wird.

    Ich weiß nicht genau wieso, aber irgendwie funktioniert das nicht:

    class Board
    {
    public:
    	Board();
    	~Board();
    	Move getLegalMove(int index);
    	int getLengthOfMoves() const;
    	int AddMove(Move& move);
    	void ClearMoves();
    private:
    	Move legalMoves[200]; // die möglichen Züge
    	int lengthOfMoves;
    };
    

    Die Klasse Board.
    Und hier die Methoden:

    Move Board::getLegalMove(int index)
    {
    	return legalMoves[index];
    }
    
    int Board::getLengthOfMoves() const
    {
    	return lengthOfMoves;
    }
    
    int Board::AddMove(Move& move)
    {
    	legalMoves[lengthOfMoves++] = move;
    	return lengthOfMoves;
    }
    
    void Board::ClearMoves()
    {
    	lengthOfMoves = 0;
    }
    

    Wenn ich jetzt einige Züge hinzufüge, und dann die Methode "getLengthOfMoves()" aufrufe, erhalte ich immer 0!

    Wisst ihr woran das liegen könnte?

    Gruß Alex



  • 😡 😡 😡
    Sooooo dumm von mir!

    Ich habe nicht die Referenz des Spielbrettes übergeben sondern eine Kopie und somit zwei verschiedene Objekte gehabt. 😞

    Tut mir leid, dass ich da nicht selbst drauf gekommen bin... 😉

    Gruß Alex


Log in to reply