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