1

私はしばらくの間QDebugwithのオーバーロードを使用してきました:msvc2010

friend QDebug &operator<<(QDebug &debug, const UsingClass &uc)
{
    debug << uc.stringForStreaming();
    return debug;
}

ただし、この署名の下MinGWgcc 4.6.2は認識されないため、(参照なし &) に変更する必要があります。

friend QDebug operator<<(QDebug debug, const UsingClass &uc)
{
    debug << uc.stringForStreaming();
    return debug;
}

QDebugヘッダーファイルとそこにある署名を基本的に参照しているので、これはどういうわけか私を驚かせます。

  1. では、演算子を でオーバーロードするための正しい署名は何QDebugですか? SO: qDebug の operator<< をオーバーロードする方法は、参照のないものを示していますが、理由はわかりません (異なるフォーカス)。
  2. msvc2010 では最初の署名 (&) が機能するのに、gcc では失敗するのはなぜですか?
4

0 に答える 0