1
fはstruct Yのメンバー関数であり、struct Xのフレンドとして宣言されています。なぜ、fは意図したとおりにXのプライベートメンバーにアクセスできませんか?C++メンバーはフレンドとして機能します
メンバ関数を効果的に作成する方法を理解してください。私は、グローバル関数のアクセス可能な例を友人として簡単に見つけましたが、メンバー関数ではありませんでした。
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
}
http://ideone.com/goHLoCはどのコンパイラを使用していますか? – Slava
Works for me g ++ 5.1.0 –
これはビジュアルスタジオの場合、intellisenseはエラーを報告するようですが、うまくコンパイルする必要があります。 – AlexG