我已经尝试解决这个问题一个小时了,但一无所获。
我有一个带有 friend
函数和 private
成员的类,但我收到一个编译器错误,告诉我无法访问 private
使用该 friend
函数的成员。
line 36 error: 'family* family::famPtr' is private
类体内的friend
原型(prototype)如下
friend void output(family *famPtr);
私有(private)成员是这样的:
private:
string husband;
string wife;
string son;
string daughter1;
string daughter2;
family *famPtr;
这是 family
对象 Simpson
的主函数中的函数调用本身。
output(Simpson.famPtr);
我不确定我在哪里搞砸了,它看起来相对简单,我的教科书让我无处可去,我在这里找到的任何东西都没有引导我走向正确的方向。
最佳答案
您不能通过以下方式调用该函数
output(Simpson.famPtr);
因为相对于调用函数的范围,数据成员 Simpson.famPtr
是私有(private)的。
它位于您可以使用表达式 Simpson.famPtr 的函数内。
也就是说,函数本身就是友元。不是调用函数的作用域就是类友元。
如果该类包含一个公共(public)访问器,例如
family * get_family() const;
然后你就可以调用这个函数了
output(Simpson.get_family() );
关于c++ - 好友功能看不到私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32188403/