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 :
templatestruct foo { template friend class foo; private: // ... };
Cette syntaxe semble être compilée 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 :
templatestruct foo { template friend struct foo ; private: // ... };
Malheureusement, cette 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 de modèle de foo, la deuxième approche utilisant la classe amie foo est la plus proche possible, compte tenu des contraintes de la syntaxe C.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3