我有一个 Figure 类及其派生类 King、Queen、Rook、Bishop、Pawn 等。此外,还有一个 Field 类,它模拟国际象棋领域的特征。
现在,我的所有派生类,即 King、Queen、Rook 等,都需要访问类 Field 中保存的私有(private)信息。我怎样才能做到这一点,而不是在类 Field 中手动编写:friend class King; friend 类皇后;
... ?
有没有一种方法可以同时为类 Field 提供对所有这些类的访问?
最佳答案
我猜你的派生“图形”类(King、Queen、Rook 等)需要访问私有(private) Field 数据才能移动它们自己?
理想情况下,我认为 Figure 类应该公开某种使用某种数据结构来描述其运动特征的公共(public)方法,并允许 Field 使用该公共(public)方法来操作其内部私有(private)数据。每个派生类都应提供自己的实现,以便它们可以返回描述其运动的正确数据结构。
或者,如果您必须提供好友访问权限,我认为您可以尝试使用friend class Figure
,然后在 Figure 类上公开protected
方法以供您使用允许他们操纵该数据的派生类。
关于c++ - 如何访问许多类,所有类都派生自基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8475696/