Le Fri, 11 Aug 2006 23:37:37 +0200, Cyrille a écrit :
Bonjour,
Le problème vient du fait que dans la déclaration de la classe, B est compris, au moins par gcc, comme B<N>.
Oui, à l'intérieur de la classe, le nom B désigne B<N>.
Y a t'il un moyen de rendre ce code valide ?
Prendre le nom "à l'extérieur de la classe" en s'aidant de l'opérateur de résolution de portée.
Ainsi, remplacez B par ::B dans la ligne qui fait désordre: return A<N,::B>::getName(); // Plus d'erreur
Ça marche avec Visual C++ 2005 et Comeau. Cela marche aussi avec gcc
merci
Au passage, en C++, mettre void en paramètre des fonctions pour dire qu'elles n'ont pas de paramètres, est inutile.
Oui, c'est un choix personnel, je trouve le code plus lisible :)
Gabriel Dos Reis
Helfer Thomas writes:
| Le Fri, 11 Aug 2006 23:37:37 +0200, Cyrille a écrit : | | >> Bonjour, | >> | >> Le problème vient du fait que dans la déclaration de la classe, B est | >> compris, au moins par gcc, comme B<N>. | > | > Oui, à l'intérieur de la classe, le nom B désigne B<N>. | > | >> Y a t'il un moyen de rendre ce code valide ? | > | > Prendre le nom "à l'extérieur de la classe" en s'aidant de l'opérateur | > de résolution de portée. | > | > Ainsi, remplacez B par ::B dans la ligne qui fait désordre: | > return A<N,::B>::getName(); // Plus d'erreur | > | > Ça marche avec Visual C++ 2005 et Comeau. | Cela marche aussi avec gcc
Oui, c'est la manière standard de faire.
| > Au passage, en C++, mettre void en paramètre des fonctions pour dire | > qu'elles n'ont pas de paramètres, est inutile. | | Oui, c'est un choix personnel, je trouve le code plus lisible :)
C'est une abomination, selon Doug MycIlroy et Dennis Ritchie. :-)
-- Gaby
Helfer Thomas <helferthomas.@free.fr> writes:
| Le Fri, 11 Aug 2006 23:37:37 +0200, Cyrille a écrit :
|
| >> Bonjour,
| >>
| >> Le problème vient du fait que dans la déclaration de la classe, B est
| >> compris, au moins par gcc, comme B<N>.
| >
| > Oui, à l'intérieur de la classe, le nom B désigne B<N>.
| >
| >> Y a t'il un moyen de rendre ce code valide ?
| >
| > Prendre le nom "à l'extérieur de la classe" en s'aidant de l'opérateur
| > de résolution de portée.
| >
| > Ainsi, remplacez B par ::B dans la ligne qui fait désordre:
| > return A<N,::B>::getName(); // Plus d'erreur
| >
| > Ça marche avec Visual C++ 2005 et Comeau.
| Cela marche aussi avec gcc
Oui, c'est la manière standard de faire.
| > Au passage, en C++, mettre void en paramètre des fonctions pour dire
| > qu'elles n'ont pas de paramètres, est inutile.
|
| Oui, c'est un choix personnel, je trouve le code plus lisible :)
C'est une abomination, selon Doug MycIlroy et Dennis Ritchie.
:-)
| Le Fri, 11 Aug 2006 23:37:37 +0200, Cyrille a écrit : | | >> Bonjour, | >> | >> Le problème vient du fait que dans la déclaration de la classe, B est | >> compris, au moins par gcc, comme B<N>. | > | > Oui, à l'intérieur de la classe, le nom B désigne B<N>. | > | >> Y a t'il un moyen de rendre ce code valide ? | > | > Prendre le nom "à l'extérieur de la classe" en s'aidant de l'opérateur | > de résolution de portée. | > | > Ainsi, remplacez B par ::B dans la ligne qui fait désordre: | > return A<N,::B>::getName(); // Plus d'erreur | > | > Ça marche avec Visual C++ 2005 et Comeau. | Cela marche aussi avec gcc
Oui, c'est la manière standard de faire.
| > Au passage, en C++, mettre void en paramètre des fonctions pour dire | > qu'elles n'ont pas de paramètres, est inutile. | | Oui, c'est un choix personnel, je trouve le code plus lisible :)
C'est une abomination, selon Doug MycIlroy et Dennis Ritchie. :-)