オペレータにこのようなネストされたプライベートクラスのオペレータをオーバーロードする方法< <?演算子<<のネストされたプライベートクラスのオーバーロードが可能ですか?
class outer {
private:
class nested {
friend ostream& operator<<(ostream& os, const nested& a);
};
// ...
};
外側のクラス・コンパイラの外側をしようとプライバシー文句:
はerror: ‘class outer::nested’ is private
と目print関数は 'const'メンバ関数でなければなりません。 'std :: ostream&print(std :: ostream&out)const'の場合、' operator << 'は' return obj.print(dest); 'の1行にすぎません。 – Nawaz
なぜstd:ostreamはInnerの友人である必要がありますか? – Mordachai
それ以外の場合は 'Inner'で定義することはできません。 (Innerに定義されていない場合は、Innerは外部のprivateメンバーなので、Innerにはアクセスできないという問題があります。) –