Maison  >  Article  >  développement back-end  >  Comment déclarer une structure basée sur un modèle comme ami en C ?

Comment déclarer une structure basée sur un modèle comme ami en C ?

DDD
DDDoriginal
2024-11-06 15:49:02284parcourir

How to Declare a Templated Struct as a Friend in C  ?

Déclaration de structure/classe modèle en tant qu'ami

En programmation C, on peut rencontrer des scénarios dans lesquels déclarer une structure ou une classe modèle en tant qu'ami est voulu. Cependant, lorsque vous essayez l'approche courante ci-dessous, certains compilateurs, tels que Visual C 8 (VC8), génèrent des erreurs :

template <typename T>
struct foo
{
    template <typename S>
    friend struct foo<S>;
};

La raison derrière cette erreur est l'incapacité du compilateur à gérer plusieurs listes de paramètres de modèle dans un une seule ligne. Pour surmonter cet obstacle, une syntaxe alternative est introduite :

template <typename> friend class foo;

En spécifiant une liste de paramètres de modèle vide, la déclaration d'ami s'applique désormais à toutes les instanciations potentielles de la structure ou de la classe basée sur un modèle. Cependant, il convient de noter que cette approche rend tous les modèles amis les uns avec les autres. Par exemple, foo et foo seraient tous les deux amis, malgré votre intention initiale de déclarer les instances de foo comme amis à foo.

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