クラスで定義されたフレンド関数にアクセスする
C では、フレンド関数はクラス内で宣言されますが、クラスのプライベート メンバーや保護されたメンバーにアクセスできます。次のコード スニペットを考えてみましょう。
<code class="cpp">class A { friend void fun(A a); friend void fun2(); friend void fun3(); }; void fun3() { std::cout << "I'm here3" << std::endl; }</code>
fun(A) 関数へのアクセスは、この関数にはタイプ A のパラメータがあり、引数依存の検索でそれを見つけることができるため、正常に機能します。ただし、グローバル関数 fun2() および fun3() へのアクセスには問題があります。
クラス内で fun2 を宣言すると、それがフレンド関数になりますが、グローバル スコープでは宣言されません。したがって、クラス外で fun2() にアクセスする場合は次のようになります。
これを解決するための正しいアプローチは、クラスの外ですべてのフレンド関数を定義し、それらをクラスの明示的なフレンドにすることです。
<code class="cpp">class A { friend void fun(A a); friend void fun2(); friend void fun3(); }; void fun(A a) { std::cout << "I'm here" << std::endl; } void fun2() { std::cout << "I'm here2" << std::endl; } void fun3();</code>
定義このようにして、フレンド関数を使用すると、クラス内外の両方でフレンド関数にアクセスできるようになります。
以上がC のクラスで定義されたフレンド関数にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。