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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
"Never use brute force in fighting an exponential." (Andrei Alexandrescu)
Mes articles dont Conseils divers sur le C++
Une très bonne doc sur le C++ (en) Why linux is better (fr)
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.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 genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part template<int> friend class angle;auriez vous une idée ?redefined parameter int 'cycle' as int <Anonymous>
J''instancie la classe de cette façon:
Code : Sélectionner tout - Visualiser dans une fenêtre à part angle<100> a;
merci
Et avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part template <int N> friend class angle<N>;
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
ç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![]()
enfin, bon, après un certain temps, ce sujet est![]()
A propos, cette astuce devrait être ajoutée à la faq non ?
Merci à tous![]()
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Partager