我正在制作一个国际象棋游戏,并且正在布置课程。有一个基本的 Piece 类,并从它继承单独的 Rook、Bishop、Knight、Pawn、King 和 Queen 类是有意义的。构造函数需要的唯一参数是一个布尔“所有者”值(它将是基类的成员):对于玩家为 true,对于 AI 为 false。我认为对象应该像这样实例化:
//create a Rook owned by the player
Rook exampleRook = new Rook(true);
//create a Knight owned by the AI
Knight exampleKnight = new Knight(false);
Run Code Online (Sandbox Code Playgroud)
看来我必须在每个派生类中执行类似的操作:
Rook(bool owner) {
this->owner = owner;
}
Run Code Online (Sandbox Code Playgroud)
这似乎违反了继承的整个原则:在基类中编写一次代码,然后继承。我可能必须在基类中编写 setOwner() 函数,但在构造函数中而不是在单独的函数(可以再次调用)中设置所有者似乎更有意义。
您可以将成员初始化放在基类构造函数的初始化列表中
Piece(bool _owner) : owner(_owner) {}
Run Code Online (Sandbox Code Playgroud)
然后在派生类中只需传递给基类构造函数
Rook(bool owner) : Piece(owner) {}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
496 次 |
最近记录: |