2012-02-10 40 views
0

看看下面這個例子象棋的設計問題

class Player { 
     ChessEngine* ce; 
    public: 
     makeMove() { 
      ce.addMove(); 
     } 
    }; 

    class ChessEngine { 
     Player* p1; 
     list<move*> moveList; 
    public: 
     ChessEngine() { 
      p1 = new Player; 
     } 
     Player* getPlayer() { 
      return p1; 
     } 
     void addMove() { 

     } 
    }; 

    int main() 
    { 
     ChessEngine chessEngine1; 
     return 0; 
    } 

我進行了重組,以便它可以被理解的問題。 這裏ChessEngine知道Player來調用makeMove。

玩家需要調用對象chessEngine的addMove。 我的問題是如何將** ChessEngine * ce屬性的類Player *初始化爲指向對象chessEngine1的指針?

回答

0

這可以通過添加構造來完成,以Player

Player(ChessEngine * _ce) : ce(_ce) {} 

並傳遞ChessEngine作爲參數:

ChessEngine() { 
    p1 = new Player(this); 
}