求朋友帮我看看这段代码 友元关系怎么没用?
#include <iostream>#include <string>
class Lovers
{
public:
Lovers();
void kiss();
};
Lovers::Lovers()
{
}
void Lovers::kiss()
{
std::cout << "正在亲吻!!!.................." << std::endl;
}
class Boyfriend:public Lovers
{
public:
void zhui(std::string name);
void fuwo();
Boyfriend(std::string name);
//protected:
std::string boyname;
};
Boyfriend::Boyfriend(std::string name)
{
boyname = name;
}
void Boyfriend::fuwo()
{
std::cout << "我正在做俯卧撑............." << std::endl;
}
void Boyfriend::zhui(std::string name)
{
std::cout << name << " 请问可以追你吗?!!!" << std::endl;
}
class Girlfriend:public Lovers
{
public:
void ask(std::string name,std::string whater);
Girlfriend(std::string name);
protected:
std::string girlname;
//friend class Boyfriend; //这里说明Boyfriend类和Girlfriend类是友元关系
};
Girlfriend::Girlfriend(std::string name)
{
girlname = name;
}
void Girlfriend::ask(std::string name,std::string whater)
{
std::cout << name << "你给我去做" << whater << "完成了我就答应你!!!" << std::endl;
}
int main()
{
Boyfriend boyf("九尾狐");
Girlfriend girlf("封芯狐");
boyf.zhui(girlf.girlname);//这里调用Girlfriend类里的girlname 我用了友元关系还是提示" 'girlname' : cannot accessprotected member declared in class 'Girlfriend'"
girlf.ask(boyf.boyname,"一万次俯卧撑");
boyf.fuwo();
boyf.kiss();
return 0;
}
求朋友帮我看看 看了1一个小时也没解决了 :dizzy: 同求啊,有高人帮忙吗? 友元关系并不是指对象可以调用隐藏属性给友元函数,隐藏属性无论如何都是不可以被对象调用;
友元关系指的是在此类里面可以调用友元类的各种属性和方法
比如你的这个函数可以Boyfriend::boyf(std::string name)
{
std::cout << name << " 请问可以追你吗?!!!" << std::endl;
}
可以改为:
Boyfriend::boyf(Girlfriend *p)
{
std::cout << p->girlname << " 请问可以追你吗?!!!" << std::endl;
}
上面girlname是隐藏的但仍能被调用,如果没有友元关系系统会报错提示你girlname是受保护的 <命> 发表于 2013-4-16 23:13
同求啊,有高人帮忙吗?
友元关系并不是指对象可以调用隐藏属性给友元函数,隐藏属性无论如何都是不可以被对象调用;
友元关系指的是在此类里面可以调用友元类的各种属性和方法
比如你的这个函数可以Boyfriend::boyf(std::string name)
{
std::cout << name << " 请问可以追你吗?!!!" << std::endl;
}
可以改为:
Boyfriend::boyf(Girlfriend *p)
{
std::cout << p->girlname << " 请问可以追你吗?!!!" << std::endl;
}
上面girlname是隐藏的但仍能被调用,如果没有友元关系系统会报错提示你girlname是受保护的
页:
[1]