gpt4 book ai didi

C++ - 有没有办法只继承一些函数一次,而其他函数在多重继承中多次继承?

转载 作者:太空狗 更新时间:2023-10-29 21:10:04 25 4
gpt4 key购买 nike

我的问题如下:

我正在用 C++ 创建一个国际象棋游戏,有一个基类 Figure,它包含所有图形共享的功能以及单独重新定义的虚函数 checkMove对于每个图形(自然地,每个图形在不同的规则下移动)。棋盘是指向 Figure 的二维指针数组(空方 block 就是空指针)。

问题是,我想让 Queen 继承 RookBishop,因为它是两者的混合体意图和目的,而不是编写自己不必要的长 checkMove 覆盖。

然后是我的问题:在 Figure 基类中,有一些基本功能可以定义该人物在控制台中将由哪个角色表示,它属于哪个团队等。我希望女王只继承这些功能的一个实例。

但是,我希望女王继承 checkMove 函数两次 - 一次来自 Rook,一次来自 Bishop,所以至于在它自己的 checkMove 版本中简单地调用两者..

我尝试了一些解决方案,还试过 RookBishop 几乎继承了 Figure 类,但我似乎无法把碎片放在一起。我是多态性概念的新手,所以我找不到适当的逻辑来实现该功能。什么是好的方法?

最佳答案

皇后不是车。

我会(远离)这里的继承 - 唯一的重用真的只是为了女王。

这里更好的设计应该像下面这样(伪代码):

struct Queen {
ValidMoves canMove(GameState state) {
ValidMoves res;
res.insert( canMoveAsRook(state) );
res.insert( canMoveAsBishop(state) );
return res;
}
};

关于C++ - 有没有办法只继承一些函数一次,而其他函数在多重继承中多次继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55864370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com