Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何授予对多个类的访问权限,这些类都是从基类派生的_C++_Oop_Class_Inheritance_Polymorphism - Fatal编程技术网

C++ 如何授予对多个类的访问权限,这些类都是从基类派生的

C++ 如何授予对多个类的访问权限,这些类都是从基类派生的,c++,oop,class,inheritance,polymorphism,C++,Oop,Class,Inheritance,Polymorphism,我有一个类图,和它的派生类,国王,王后,车,主教,兵,等等。还有一个类场,它模拟了一个象棋场的特征 现在,我的所有派生类,即King、Queen、Rook等,都需要访问类字段中的私有信息。我怎样才能做到这一点,而不是在类字段中手动编写:friend class King;朋友班女王 有没有一种方法可以一次访问类字段中的所有类?重构类,使这些片段不需要访问电路板 重构类,使这些片段不需要访问电路板 我猜您的衍生人物类King、Queen、Rook等需要访问私有字段数据才能移动自身 理想情况下,我认

我有一个类图,和它的派生类,国王,王后,车,主教,兵,等等。还有一个类场,它模拟了一个象棋场的特征

现在,我的所有派生类,即King、Queen、Rook等,都需要访问类字段中的私有信息。我怎样才能做到这一点,而不是在类字段中手动编写:friend class King;朋友班女王


有没有一种方法可以一次访问类字段中的所有类?

重构类,使这些片段不需要访问电路板

重构类,使这些片段不需要访问电路板

我猜您的衍生人物类King、Queen、Rook等需要访问私有字段数据才能移动自身

理想情况下,我认为Figure类应该公开某种公共方法,该方法使用某种数据结构来描述其移动特征,并允许字段使用该公共方法来操作其内部私有数据。每个派生类都应该提供自己的实现,以便返回描述其移动的正确数据结构


或者,如果您必须提供friend访问,我认为您可能可以尝试使用friend类Figure,然后在Figure类上公开受保护的方法,供派生类使用,从而允许它们操作该数据。

我猜您的派生Figure类King、Queen、Rook、,等。是否需要访问专用字段数据才能移动自身

理想情况下,我认为Figure类应该公开某种公共方法,该方法使用某种数据结构来描述其移动特征,并允许字段使用该公共方法来操作其内部私有数据。每个派生类都应该提供自己的实现,以便返回描述其移动的正确数据结构

或者,如果您必须提供friend访问,我认为您可能可以尝试使用friend类Figure,然后在Figure类上公开受保护的方法,供派生类使用,从而允许它们操作该数据。

考虑为什么Figure子类需要访问字段成员。可能是因为在执行移动时,您想检查一个字段是否已被另一个图形占用

如果是这样,考虑把这个逻辑移动到一个专用的类,比如移动。例如,移动可以包含源字段和目标字段。然后,您可以使用类似于Game::apply Move方法的soemthing,该方法将移动应用于修改游戏状态的游戏。在这种情况下,只有Move类需要访问字段成员

这只是一个例子;总体思路是首先找出为什么所有这些图形子类都需要访问字段,然后将该部分分解为一个公共类。

考虑为什么图形子类需要访问字段成员。可能是因为在执行移动时,您想检查一个字段是否已被另一个图形占用

如果是这样,考虑把这个逻辑移动到一个专用的类,比如移动。例如,移动可以包含源字段和目标字段。然后,您可以使用类似于Game::apply Move方法的soemthing,该方法将移动应用于修改游戏状态的游戏。在这种情况下,只有Move类需要访问字段成员


这只是一个例子;总体思路是首先找出为什么所有这些图形子类都需要访问字段,然后将该部分分解为一个公共类。

为什么它们需要访问私有数据?从设计的角度来看,这听起来非常错误。我认为一个字段可以容纳一个片段,但片段不应该访问董事会的字段。为什么他们需要访问私有数据?从设计的角度来看,这听起来非常错误。我认为一个字段可以容纳一个片段,但是一个片段不应该访问电路板的字段。