別のクラスのフレンドとしてクラス メンバー関数を指定しますか? で説明されている状況と同様の状況があります。.
ただし、私の場合、クラス 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(); }
};
ヘルパーに感謝します!
(ちなみに、これは私の最初の質問です。私は自分自身を明確に説明したいと思います)