Maison > Article > développement back-end > Comment déclarer des structures/classes modélisées comme amis en C ?
Déclarer des structures/classes basées sur un modèle comme amis
En C, on peut rencontrer des difficultés lors de la déclaration de structures ou de classes basées sur un modèle comme amis d'autres structures basées sur un modèle ou des cours. Considérez le scénario suivant :
template <typename T> struct foo { template <typename S> friend struct foo<S>; private: // ... };
La compilation de ce code dans Visual C 8 peut déclencher l'erreur C3857 : « plusieurs listes de paramètres de modèle ne sont pas autorisées. » Cela résulte de l'incapacité du compilateur à gérer la déclaration de modèle imbriquée dans la déclaration d'ami.
Pour résoudre ce problème, on peut utiliser la syntaxe simplifiée :
template <typename> friend class foo;
Cette syntaxe déclare toutes les instances de la structure foo basée sur un modèle en tant qu'amis du modèle foo englobant. Il atteint efficacement l'objectif visé de rendre toutes les instanciations possibles de foo amis les uns des autres.
Notez que cette approche diffère de la déclaration originale en ce sens qu'elle rend tous les modèles amis les uns des autres, quels que soient les arguments spécifiques du modèle. . Cela peut ou non être le comportement souhaité, en fonction des exigences spécifiques.
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!