我正在学习 C++ 类(class),我遇到了一些我无法理解的事情。我尝试寻找答案,但没有找到答案。
class A {
friend void C::dec(A&);
private:
int field;
};
class C {
public:
void dec(A& a);
};
void C::dec(A& a) { a.field--; } <-- member A::field is inaccessible
我知道要实现这一点,类 A 应该在类 C 之前声明,但在类 C 之后定义。但我很难理解为什么。
那么为什么当类 A 在类 C 之前定义时,类成员 A::field 不可访问呢?
最佳答案
问题不在于友元声明,只是 C
未知您在 A
中声明它的位置。
因此,您定义 C
并转发声明 A
,然后像您已经做的那样定义 C
。
class A;
class C {
public:
void dec(A& a);
};
class A {
friend void C::dec(A&);
private:
int field;
};
void C::dec(A& a) { a.field--; }
关于c++ - 好友功能-成员(member)无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59681960/