クラス内で定義されたフレンド関数へのアクセス
フレンド関数を使用する場合、その定義とアクセス方法を理解することが重要です。フレンド関数はクラスのメンバーではないため、クラス外でフレンド関数にアクセスするには特別な考慮が必要になる場合があります。
提供されたコード スニペット内:
class A {
public:
friend void fun(A a){std::cout フレンド関数 fun() と fun3() はクラス内で定義されていますが、グローバル スコープでは宣言されていません。 fun() は、引数が A 型であるため、引数依存ルックアップ (ADL) を使用して直接アクセスできますが、fun2() にはグローバル スコープでの宣言がなければアクセスできません。
fun2() に正しくアクセスするには、クラス内でフレンド関数として定義するだけでなく、グローバルに宣言する必要があります:
class A {
public:
friend void fun(A a){std::cout この修正バージョンでは、fun2() はクラスの外で通常の関数としてアクセスできます。
ただし、フレンド関数はクラスの外で宣言された通常の方法で定義することをお勧めします。友達として:
class A {
friend void fun(A a);
friend void fun2();
friend void fun3();
};
void fun(A a) { std::cout このアプローチにより、すべてのフレンド関数が正しく定義および宣言され、意図したとおりにアクセスおよび使用できるようになります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3