フレンド演算子をオーバーロードしています <<テンプレート クラス
の << をオーバーロードしようとすると、演算子をテンプレート クラスのフレンドとして使用すると、非テンプレート関数を宣言していることを示すコンパイラ警告が表示される場合があります。この問題を解決するには、フレンド宣言の前にテンプレート関数を正しく宣言する必要があります。
提供されたコードでは、<< のフレンド宣言は、演算子は次のとおりです:
<code class="cpp">friend ostream& operator<<(ostream&, Pair<T,U>&);<p>ただし、コンパイラは <> を追加することを推奨します。関数名に括弧を付けて、テンプレート関数として宣言する必要があることを示します。正しい構文は次のとおりです。</p> <pre class="brush:php;toolbar:false"><code class="cpp">friend ostream& operator<< <> (ostream&, Pair<T,U>&);</code>
これは << を宣言します。演算子をテンプレート クラスのペアのフレンドとして扱い、それがジェネリック パラメータ T および U を持つテンプレート関数であることを指定します。
テンプレート関数の宣言も、Pair クラスのテンプレート定義の前に配置して、コンパイラは、フレンド宣言を解析するときにテンプレート関数を認識します。正しいフレンド宣言とテンプレート関数宣言を含む修正コード:
template class Pair;
template
ostream& operator<< <> (ostream&, Pair&);
// Pair template class definition...以上がFriend 演算子をオーバーロードする方法 `の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。