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& operator<<(ostream&, Pair<T,U>&);<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& operator<< <> (ostream&, Pair<T,U>&);</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!