フレンド関数を使用して次のことを達成する方法について少し混乱しています。
メンバ関数 'f' がクラス B のフレンドとして宣言されるクラス A があるとします。
私が理解しているように、通常の解決策はこれです:
定義されていないと宣言されている 'f' のみでクラス A を定義します。
'f' のフレンド宣言を含むクラス B を定義します。
「f」を定義する
ここで、クラス A に、クラス型 B のデータ メンバー、または vector < B > のような B 型要素のコンテナーがあるとしたらどうでしょう。
クラス B の前方宣言は機能しているように見えます (つまり、コンパイラの警告/エラーはありません) が、C++11 標準に従って合法であるかどうかはわかりません。また、このようなソリューションでは、クラス B のコンストラクターを使用して、A のクラス B 型メンバーにクラス内イニシャライザーを提供することはできません。C++11 に準拠してこれらすべてを達成するための最良の方法は何でしょうか? ?
標準自体から解決策を見つけようとしましたが、そのようなシナリオについての言及は見つかりませんでした。どなたか指摘していただけると嬉しいです。
PS私は本当に初心者なので、回答で別のことを想定しないでください。詳細な回答は気にしません:)