私は2つの異なるクラスが別のクラスオブジェクトを共有して変更できるようにするために少し問題があります。C++オブジェクト間で変数を共有しています。
私はHumanPlayerクラス、ComputerPlayerクラス、Boardクラスを持っています。 2つのプレーヤークラスは、1つのボードクラスと対話できる必要があります。私は、同じBoardオブジェクトへの参照を各クラスに渡すことができると思っていましたが、私が望むように動作しているようには見えません。ここでは、メインに何の一部だと私は私ができるように最善を何が起こっているのかを説明します:
Board *board2 = new Board();
board2->setBoardSize(5);
board2->initPits();
HumanPlayer firstPlayer(*board2, *menu, menu->askForFirstTurn(), true);
firstPlayer.removeFromPit(3);
board2->showBoard();
firstPlayer.removeFromPit(3);
//main.cppはちょうどにボードクラスの配列に値を設定することになっていますゼロ。それはそうする。 FirstPlayerクラスのコード内からボードを表示すると、変更が反映されます。しかし、board2->showBoard()
と呼ぶと、何も変わっていないかのようです。それはまだ元の変更されていないボードです。私が実際にやりたいことは、firstPlayerクラスとsecondPlayerクラスを1つの共有ボードオブジェクトで動作させることです。私は今これを正しく実装する方法がわかりません。
ありがとうございました。より多くの情報が必要な場合はお知らせください。
'HumanPlayer firstPlayer(* board2、* menu、menu-> askForFirstTurn()、true);'は未定義の動作です。 – Marlon
@マールロン:どうですか?それは私にはうまく見えます。 –
あなたが投稿したコードはわかりましたか?あなたが説明したことを正確に行うべきです。ですから、問題はおそらくremoveFromPit()がどのように実装されているかです。あるいは、HumanPlayerクラスの内部にボードリファレンスをどのように保存するのでしょうか。 – tp1