Maison >développement back-end >C++ >Comment pouvez-vous déclarer des structures/classes modélisées comme amis en C ?
Dans le domaine du C, déclarer des structures ou des classes basées sur un modèle comme amis peut présenter un obstacle lié à la syntaxe. Pour y parvenir, envisagez l'approche suivante :
template <typename T> struct foo { template <typename> friend class foo; private: // ... };
Cette syntaxe semble se compiler avec succès. Cependant, il déclare toutes les instanciations de modèle de foo comme amies les unes des autres, quel que soit le paramètre de modèle qu'elles prennent. Cela peut ou non correspondre à votre cas d'utilisation prévu.
Si vous devez limiter l'amitié à des instanciations spécifiques uniquement, vous pouvez y parvenir en utilisant cette syntaxe :
template <typename T> struct foo { template <typename S> friend struct foo<S>; private: // ... };
Malheureusement, cela la syntaxe ne permet pas une déclaration générique incluant toutes les instanciations possibles de foo.
Par conséquent, si votre objectif est d'établir une amitié à travers toutes les instanciations du modèle foo, la deuxième approche utilisant la classe d'ami foo est la plus proche de vous. peut obtenir, compte tenu des contraintes de la syntaxe C.
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!