好友功能 - 成员不可访问
Friend function - member is inaccessible
我正在学习 C++ 课程,我遇到了一些我无法理解的事情。我尝试寻找答案,但找不到答案。
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
我知道要使它起作用,class A 应该在 class C 之前声明,但在之后定义。但我很难理解为什么。
那么为什么class成员A::field在classA定义在classC之前无法访问?
问题不在于好友声明,只是 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++ 课程,我遇到了一些我无法理解的事情。我尝试寻找答案,但找不到答案。
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
我知道要使它起作用,class A 应该在 class C 之前声明,但在之后定义。但我很难理解为什么。
那么为什么class成员A::field在classA定义在classC之前无法访问?
问题不在于好友声明,只是 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--; }