f是struct Y的成员函数,并在struct X中声明为朋友。为什么f不能按预期访问X的私有成员?
请帮助我了解如何有效地使会员功能成为朋友。我很容易找到全局函数的可访问示例作为朋友,但不是成员函数。
struct X;
struct Y {
void f(X* a);
};
struct X {
private:
int i;
public:
friend void Y::f(X* a);
};
void Y::f(X* x) {
x->i = 0; // Error: member "X::i" (declared at line 9) is inaccessible
}
答案 0 :(得分:-1)
F不需要虚拟吗?我错了。