C ++成员充当朋友

时间:2017-05-02 19:21:25

标签: c++ friend member-functions

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
}

1 个答案:

答案 0 :(得分:-1)

F不需要虚拟吗?我错了。