certes, je l'ai constaté, mais c'est à la conséquence de ce fait sur mes constructions héritées que je m'intéresse.
Note: le compilo accepte une référence non const.
Version imprimable
Oui, car sémantiquement c'est valide, ca ne brise aucune règles qui pourraient empêcher la compilation mais regarde ce code.
Il ne va pas compiler, car la référence sera sur un objet temporaire.Code:
1
2
3
4
5
6
7
8
9
10 class A { A(int){/*...*/} A(A& a){/*...*/} }; int main() { A aa=5; // <=> A aa(A(5)). }
Avec une référence const, ca passe.
Pas de cours, non, je ne sais plus où j'avais trouvé la solution à l'époque où j'en avais eu besoin. je suppose qu'une recherche approfondie sur google sur friend template doit pouvoir ramener quelque chose d'intéressant.Citation:
avec cette déclaration, le friend est valide pour n'importe quel angle template ?
aurais-tu un que c'est une cours traitant ce point, je souhaiterais approfondir .
Par contre, la première réponse à ta question est oui, ça fait en sorte que n'importe quel angle template est friend. C'est il me semble ce que tu cherchais à faire ;)
Bonjour, bon, j'ai eu une petite coupure, mais j'ai enfin pu tester cette solution:
Sous gcc (via code::blocks), j'ai, uniquement lorsque j'instancie la classe, une erreur sur cette ligne:il me dit quelque chose du genreCode:template<int> friend class angle;
auriez vous une idée ?Citation:
redefined parameter int 'cycle' as int <Anonymous>
J''instancie la classe de cette façon:Code:angle<100> a;
merci
Et avec :
Code:template <int N> friend class angle<N>;
ça ne marchait pas non plus, mais j'ai trouvé d'ou venait mon problème ><'
j'avais redéfini le int en unsigned int, d'ou le conflict .
je vais me faire fouetter pour la peine :sm:
enfin, bon, après un certain temps, ce sujet est :resolu:
A propos, cette astuce devrait être ajoutée à la faq non ?
Merci à tous :D