2012-02-10 63 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); 
}