比较两个对象之间的实例。 C ++

时间:2016-12-09 05:32:26

标签: c++ object compare instance

我目前正在创建一个设计糟糕的战舰游戏,我已经到达了一个地方,我无法弄清楚如何从另一个对象访问一些数据。

我有一个棋盘类,它创建了两个大小为100的数组。我有一个玩家类,其中有两个属于他们的板的实例(他们的棋盘和敌人棋盘(命中,小姐,空))< / p>

我正在做的事情是,弄清楚如何让两个玩家的棋盘同步,但是在棋盘内部,内部球员......

我认为我的功能是不受欢迎的

 class Board{
    int playerBoard[100];
    int enemyBoard[100];

    int makeMove(Move)
      {
        // compare player1.enemyBoard to player2.playerBoard (THIS ??)
      };

 class Player{
    Board playerBoards;

    void makeMove() // edit, the makeMove() in players, cant have parameters
    {
    playerBoards.makeMove(Move x){...};
    };
 }

 Player player1;
 Player player2;

player1.makeMove(Move x);

但是如何在player1.boards的功能内部进入player2 ... 我很困惑,任何帮助将不胜感激。我很抱歉这可能导致任何混乱。

1 个答案:

答案 0 :(得分:2)

您可以像以下解决方案一样实现

class Board{
      private:
        int player1Board[100];
        int player2Board[100];
      public:
        int* getPlayerBoard(int playerID){
            if (playerID == 1)
                 return &player1Board;
            else if (playerID == 2)
                 return &player2Board;
            else
                 return nullptr;
        }
        int makeMove(Move,int playerID)
        {
           if(playerID == 1){
              //update player1Board
           }
           elseif (playerID == 2){
              //update player2Board
           }
       };

class Player{
    private:
       Board* playerBoards;
       int playerID;

    public:
       Player(int _playerID, Board* _playerBoards){
          playerID = _playerID;
          playerBoards = _playerBoards;
       }
       void makeMove() // edit, the makeMove() in players, cant have parameters
       {
          playerBoards->makeMove(Move x,playerID){...};
       };        
 }

 Board playerBoards;
 Player player1(1,&playerBoards);
 Player player2(2,&playerBoards);

 player1.makeMove(Move x);

要进一步改善它,您也可以在Board类中使用单例模式