次の名前空間とクラス階層があります。
namespace Ns1 {
class Outer {
private:
class Inner {
};
QSet<Inner> set;
};
}
次に、グローバル関数を宣言する必要があります。
uint qHash(Ns1::Outer::Inner const& el);
bool operator==(Ns1::Outer::Inner const& el1,
Ns1::Outer::Inner const& el);
したがって、関数はOuterとInnerのフレンドである必要があります。問題と、関数がグローバルスコープにあることを示すには:
friend uint qHash(Ns1::Outer::Inner const& el);
friend operator==(Ns1::Outer::Inner const& el1,
Ns1::Outer::Inner const& el);
この場合、前方宣言を処理することはできません。解決策はありますか?