Maison >développement back-end >C++ >Comment surcharger l'opérateur ami `

Comment surcharger l'opérateur ami `

DDD
DDDoriginal
2024-11-01 02:59:27570parcourir

How to Overload Friend Operator `

Surcharge de l'opérateur ami << pour la classe de modèles

Lorsque vous essayez de surcharger le << en tant qu'ami d'une classe modèle, vous pouvez rencontrer un avertissement du compilateur indiquant qu'il déclare une fonction non-modèle. Pour résoudre ce problème, il est nécessaire de déclarer correctement la fonction template avant la déclaration ami.

Dans le code fourni, la déclaration ami pour le << l'opérateur est :

<code class="cpp">friend ostream&amp; operator<<(ostream&amp;, Pair<T,U>&amp;);<p>Cependant, le compilateur recommande d'ajouter <> crochets au nom de la fonction, indiquant qu'elle doit être déclarée comme fonction modèle. La syntaxe correcte est :</p>
<pre class="brush:php;toolbar:false"><code class="cpp">friend ostream&amp; operator<< <> (ostream&amp;, Pair<T,U>&amp;);</code>

Ceci déclare le << opérateur en tant qu'ami de la classe modèle Pair et spécifie qu'il s'agit d'une fonction modèle avec les paramètres génériques T et U.

N'oubliez pas que la déclaration de la fonction modèle doit également être placée avant la définition du modèle de classe Pair pour garantir que le le compilateur connaît la fonction de modèle lors de l'analyse de la déclaration d'ami. Le code corrigé avec la déclaration d'ami correcte et la déclaration de fonction de modèle :

template  class Pair;

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

// Pair template class definition...

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn