ホームページ >バックエンド開発 >C++ >Friend 演算子をオーバーロードする方法 `

Friend 演算子をオーバーロードする方法 `

DDD
DDDオリジナル
2024-11-01 02:59:27609ブラウズ

How to Overload Friend Operator `

フレンド演算子をオーバーロードしています <<テンプレート クラス

の << をオーバーロードしようとすると、演算子をテンプレート クラスのフレンドとして使用すると、非テンプレート関数を宣言していることを示すコンパイラ警告が表示される場合があります。この問題を解決するには、フレンド宣言の前にテンプレート関数を正しく宣言する必要があります。

提供されたコードでは、<< のフレンド宣言は、演算子は次のとおりです:

<code class="cpp">friend ostream&amp; operator<<(ostream&amp;, Pair<T,U>&amp;);<p>ただし、コンパイラは <> を追加することを推奨します。関数名に括弧を付けて、テンプレート関数として宣言する必要があることを示します。正しい構文は次のとおりです。</p>
<pre class="brush:php;toolbar:false"><code class="cpp">friend ostream&amp; operator<< <> (ostream&amp;, Pair<T,U>&amp;);</code>

これは << を宣言します。演算子をテンプレート クラスのペアのフレンドとして扱い、それがジェネリック パラメータ T および U を持つテンプレート関数であることを指定します。

テンプレート関数の宣言も、Pair クラスのテンプレート定義の前に配置して、コンパイラは、フレンド宣言を解析するときにテンプレート関数を認識します。正しいフレンド宣言とテンプレート関数宣言を含む修正コード:

template  class Pair;

template 
ostream& operator<< <> (ostream&, Pair&);

// Pair template class definition...

以上がFriend 演算子をオーバーロードする方法 `の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。