Classe ou structure modèle comme déclaration d'ami
Lorsque vous essayez de déclarer une structure ou une classe modèle comme amie, vous pouvez rencontrer des erreurs de compilation. Par exemple, considérons le code suivant :
template <typename T> struct foo { template <typename S> friend struct foo<S>; private: // ... };
Ce code ne parvient pas à se compiler avec un message d'erreur indiquant que plusieurs listes de paramètres de modèle ne sont pas autorisées. Cependant, vous souhaitez toujours que toutes les instanciations possibles de la structure du modèle foo soient amies de foo
Solution
Pour y parvenir, vous pouvez utiliser la déclaration suivante :
template <typename> friend class foo
Cette déclaration signifie que toutes les instanciations de modèles de la classe foo seront amies de toutes autres instanciations de modèles de la foo class.
Note supplémentaire
La déclaration
template <typename> friend struct foo;
fonctionnera également, mais elle rend toutes les instanciations de modèles de la structure foo amies de l'un l'autre. C'est probablement le comportement que vous envisagez. Cependant, il convient de noter que les déclarations d'amis et les modèles ont une syntaxe quelque peu complexe.
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!