0

別のクラスのフレンドとしてクラス メンバー関数を指定しますか? で説明されている状況と同様の状況があります。.

ただし、私の場合、クラス B はクラス A を使用しているため、クラス A を知る必要があるため、そのスレッドで指定された解決策は機能しません。関数自体にも前方宣言をしようとしましたが、うまくいきませんでした。各クラスには他のクラスの完全な定義が必要なようです...

それを解決する簡単な方法はありますか?私は、古いクラスの 1 つをラップする新しいクラスを含まないソリューションを好みます。

コード例:

//A.h
class B; //not helping
void B::fB(); //not helping

class A
{
public:
    friend void B::fB();
    void fA(){};
protected:
    void fA_protected(){};
};

//B.h
#include "A.h"

class B
{
private:
    A a;

public:
    void fB(){ a.fA_protected();} // this function should call the protected function
    void fB2(){ a.fA(); } 
};

ヘルパーに感謝します!

(ちなみに、これは私の最初の質問です。私は自分自身を明確に説明したいと思います)

4

1 に答える 1