好友功能看不到私人成员
Friend Function can't see private member
我已经尝试解决这个问题一个小时了,但一无所获。
我有一个带有 friend
函数和 private
成员的 class,但我收到一个编译器错误,告诉我无法使用它访问 private
成员friend
函数。
line 36 error: 'family* family::famPtr' is private
friend
原型如下 class body
friend void output(family *famPtr);
私有成员是这样的:
private:
string husband;
string wife;
string son;
string daughter1;
string daughter2;
family *famPtr;
这是 family
对象 Simpson
.
的主函数中的函数调用本身
output(Simpson.famPtr);
我不确定我在哪里搞砸了,它看起来相对简单,我的教科书让我无处可去,none 我在这里找到的东西让我找到了正确的方向方向.
您不能通过以下方式调用函数
output(Simpson.famPtr);
因为相对于调用函数的范围数据成员Simpson.famPtr
是私有的。
在函数中可以使用表达式 Simpson.famPtr。
也就是说,函数本身就是友元。不是函数调用的作用域是class朋友
如果 class 包含 public 访问器,例如
family * get_family() const;
然后你可以像这样调用函数
output(Simpson.get_family() );
您的程序似乎存在设计缺陷。
创建一个将 family*
作为输入 class Simpson
的 friend
的函数根本没有意义。
函数不处理Simpson
,它处理family
。使该功能成为 friend
of Simpson
有何帮助?
我很难提出解决方案,因为我不清楚你为什么首先想要 friend
-ship。
使函数成为 friend
允许它访问 private
成员。它不允许访问所有函数调用
output(Simpson.famPtr);
此处对 famPtr
的访问不是由 output
进行的
如果将输出更改为
output(family & outer)
{
old_output(outer.famPtr);
}
那么对 private
成员 famPtr
的访问包含在 friend
函数中
我已经尝试解决这个问题一个小时了,但一无所获。
我有一个带有 friend
函数和 private
成员的 class,但我收到一个编译器错误,告诉我无法使用它访问 private
成员friend
函数。
line 36 error: 'family* family::famPtr' is private
friend
原型如下 class body
friend void output(family *famPtr);
私有成员是这样的:
private:
string husband;
string wife;
string son;
string daughter1;
string daughter2;
family *famPtr;
这是 family
对象 Simpson
.
output(Simpson.famPtr);
我不确定我在哪里搞砸了,它看起来相对简单,我的教科书让我无处可去,none 我在这里找到的东西让我找到了正确的方向方向.
您不能通过以下方式调用函数
output(Simpson.famPtr);
因为相对于调用函数的范围数据成员Simpson.famPtr
是私有的。
在函数中可以使用表达式 Simpson.famPtr。
也就是说,函数本身就是友元。不是函数调用的作用域是class朋友
如果 class 包含 public 访问器,例如
family * get_family() const;
然后你可以像这样调用函数
output(Simpson.get_family() );
您的程序似乎存在设计缺陷。
创建一个将 family*
作为输入 class Simpson
的 friend
的函数根本没有意义。
函数不处理Simpson
,它处理family
。使该功能成为 friend
of Simpson
有何帮助?
我很难提出解决方案,因为我不清楚你为什么首先想要 friend
-ship。
使函数成为 friend
允许它访问 private
成员。它不允许访问所有函数调用
output(Simpson.famPtr);
此处对 famPtr
的访问不是由 output
如果将输出更改为
output(family & outer)
{
old_output(outer.famPtr);
}
那么对 private
成员 famPtr
的访问包含在 friend
函数中