C++ 从另一个类[C+;+;]访问虚拟成员函数

C++ 从另一个类[C+;+;]访问虚拟成员函数,c++,oop,inheritance,polymorphism,C++,Oop,Inheritance,Polymorphism,编辑标题 我不知道标题有多准确,所以 前几天我在SO上发布了一个关于同一个作业的问题,但是一个不同的、相当简单的问题。那里有一个指向作业详细信息的链接,但我希望你不会需要它们。(如果有帮助的话) 不管怎样,我有3门相关课程校园,建筑,以及娱乐,这是建筑的子类 大体上,我有一个uni类型的campus对象。对于某些用户选择,我需要将一个值传递到在building中初始化并在reseaction中定义的虚拟函数中。除了如何调用这个函数的问题之外,我在开始定义虚拟函数时遇到了困难 以下是娱乐 voi

编辑标题

我不知道标题有多准确,所以

前几天我在SO上发布了一个关于同一个作业的问题,但是一个不同的、相当简单的问题。那里有一个指向作业详细信息的链接,但我希望你不会需要它们。(如果有帮助的话)

不管怎样,我有3门相关课程<代码>校园,
建筑
,以及
娱乐
,这是
建筑
的子类

大体上,我有一个
uni
类型的
campus
对象。对于某些用户选择,我需要将一个值传递到在
building
中初始化并在
reseaction
中定义的虚拟函数中。除了如何调用这个函数的问题之外,我在开始定义虚拟函数时遇到了困难

以下是
娱乐

 void getFullDescription(int a)
 {
   for (int i = 0; /*campus::recreation[i].ID != a | not valid*/; i++)
   {

   }

 }
这是校园的头文件

int const maxPerBuildingType = 7;
class campus
{
friend class building;
//friend building::building(int, std::string, std::string);


private:
building academic[maxPerBuildingType];
building recreation[maxPerBuildingType];
int numberOfAcademic;
int numberOfRecreation;
std::string temp;
protected:

public:

campus();
static int const maxPerBuildingType;
void loadFile();
void searchList();
~campus();

};
正如您所知,在虚拟函数中,我必须引用在
校园
中定义的类型为“building”(即
reseaction[]
)的类。我知道这可能是简单的,基本的或者其他的,但是。。。嗯

我希望我包括了所有必要的信息。如果你需要更多,就说出来


我不明白你在问什么?您不能从
校园
以外的任何地方访问
私人
成员
校园::娱乐
,即使是从
朋友
大楼
。试着保护它?@twsaef对不起,我知道不清楚。我会设法解决的。根据我的任务,它必须是一个私有数据成员,尽管我不知道它们在什么意义上是私有的。尽管如此,由于建筑物不是儿童,我认为受保护的建筑物在建筑方面仍然是私有的?朋友应该访问私有数据成员吗?
private
只能从类内访问,
protected
可以从类内、从
friend
s以及从该类继承的其他类访问,每个人都可以访问
public
。@twsaef ok当我将虚拟函数作为好友(而不是将类本身包含在内)时,我的私有成员就会出现。但是在函数中,调用
campus::reseaction[i].getID()
仍然是非法的。@twsaef您搞错了。朋友也可以访问
private
成员。