URL: https://linuxfr.org/forums/programmation-c/posts/template-mes-amis Title: Template, mes amis ! Authors: khivapia Date: 2011年01月04日T22:16:45+01:00 Tags: Score: 0 Bonjour à tous, Une petite question qui me taraude : je désire faire des opérations sur des objets divers connus à la compilation, et pour ça j'utilise des template cl<T\> Un objet parmi ceux-ci, mettons E, me sert à extirper certaines propriétés de ma classe template cl<T\>. Dans un souci d'encapsulation, cl<\T> a des méthodes privées. cl aussi. Logique. J'ai pourtant besoin, quand j'extrais des propriétés de cl<T\>, d'appeler des méthodes de cl<E\> qui doivent, pourtant, rester privées par ailleurs. Je pourrais dire que toutes les classes cl<T\> sont amies les unes des autres, en déclarant template<class T> friend class cl { ... Mais c'est moche, cl<T\> avec T quelconque n'a besoin d'avoir que cl<E\> comme amie, pas toutes ses cousines (on n'est pas sur facebook ici). D'autre part, je n'ai rien à spécialiser dans cl<E\> qui me justifie de déclarer et définir ses méthodes par ailleurs : elles sont déclarées génériquement dans cl, pas très envie de dupliquer le code. À la rigueur la déclaration de la fonction, mais ça risque d'être assez pénible. Qu'en pensez-vous ? Faut-il dupliquer toutes mes lignes de déclaration de méthodes pour cl<E\> ? Ou bien y a-t-il un design plus élégant ? merci de vos lumières, khivapia PS : question subsidiaire : il y a un moyen d'échapper les < > autrement que de la façon - moche - dont je l'ai fait ?

AltStyle によって変換されたページ (->オリジナル) /