Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc Bourguet
Alain Cabiran writes:
bonjour,
ce code ne compile pas et je ne comprend pas pourquoi
#include <list>
template <class T> class A { public: typedef std::list<T> itlist; int i; itlist l; itlist::iterator it; typename itlist::iterator it;
};
int main(void) { A<int> inta; }
j'ai essayé avec std::list<T> à la place de itlist mais bien évidement celà n'y change rien : l'itérateur coince,
merci d'avance pour toute idée, piste, explication pourquoi "marchera pas" ...
itlist::iterator est un nom dépendant et il faut indiquer que c'est un nom de type. (De même que si c'était un template il faudrait l'indiquer avec template).
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Alain Cabiran <alain@yoko.priv> writes:
bonjour,
ce code ne compile pas et je ne comprend pas pourquoi
#include <list>
template <class T> class A {
public:
typedef std::list<T> itlist;
int i;
itlist l;
itlist::iterator it;
typename itlist::iterator it;
};
int main(void)
{
A<int> inta;
}
j'ai essayé avec std::list<T> à la place de itlist mais
bien évidement celà n'y change rien : l'itérateur coince,
merci d'avance pour toute idée, piste, explication pourquoi
"marchera pas" ...
itlist::iterator est un nom dépendant et il faut indiquer
que c'est un nom de type. (De même que si c'était un
template il faudrait l'indiquer avec template).
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
ce code ne compile pas et je ne comprend pas pourquoi
#include <list>
template <class T> class A { public: typedef std::list<T> itlist; int i; itlist l; itlist::iterator it; typename itlist::iterator it;
};
int main(void) { A<int> inta; }
j'ai essayé avec std::list<T> à la place de itlist mais bien évidement celà n'y change rien : l'itérateur coince,
merci d'avance pour toute idée, piste, explication pourquoi "marchera pas" ...
itlist::iterator est un nom dépendant et il faut indiquer que c'est un nom de type. (De même que si c'était un template il faudrait l'indiquer avec template).
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Fabien LE LEZ
On Tue, 26 Oct 2004 20:09:26 +0200, Alain Cabiran :
ce code ne compile pas et je ne comprend pas pourquoi
J'avoue que moi non plus, d'autant que Borland C++ 5.02, pourtant assez mauvais d'habitude avec les templates (car très vieux), l'accepte sans broncher. Indique le message d'erreur (y compris un repère sur la ligne concernée par le message), ainsi que le compilateur.
J'ai toutefois remarqué deux trucs passablement douteux dans ton code :
typedef std::list<T> itlist;
"itlist" pour un type "liste" ? Un tel nom ne correspondrait-il pas plutôt à un itérateur ?
D'autre part, je te conseille d'utiliser des conventions pour distinguer les noms de types des noms de variables. Perso, je mets des majuscules aux noms de types et des underscores aux noms de variables :
Ces trois membres ne devraient-ils pas être privés ?
-- ;-)
On Tue, 26 Oct 2004 20:09:26 +0200, Alain Cabiran <alain@yoko.priv>:
ce code ne compile pas et je ne comprend pas pourquoi
J'avoue que moi non plus, d'autant que Borland C++ 5.02, pourtant
assez mauvais d'habitude avec les templates (car très vieux),
l'accepte sans broncher. Indique le message d'erreur (y compris un
repère sur la ligne concernée par le message), ainsi que le
compilateur.
J'ai toutefois remarqué deux trucs passablement douteux dans ton
code :
typedef std::list<T> itlist;
"itlist" pour un type "liste" ? Un tel nom ne correspondrait-il pas
plutôt à un itérateur ?
D'autre part, je te conseille d'utiliser des conventions pour
distinguer les noms de types des noms de variables. Perso, je mets des
majuscules aux noms de types et des underscores aux noms de
variables :
On Tue, 26 Oct 2004 20:09:26 +0200, Alain Cabiran :
ce code ne compile pas et je ne comprend pas pourquoi
J'avoue que moi non plus, d'autant que Borland C++ 5.02, pourtant assez mauvais d'habitude avec les templates (car très vieux), l'accepte sans broncher. Indique le message d'erreur (y compris un repère sur la ligne concernée par le message), ainsi que le compilateur.
J'ai toutefois remarqué deux trucs passablement douteux dans ton code :
typedef std::list<T> itlist;
"itlist" pour un type "liste" ? Un tel nom ne correspondrait-il pas plutôt à un itérateur ?
D'autre part, je te conseille d'utiliser des conventions pour distinguer les noms de types des noms de variables. Perso, je mets des majuscules aux noms de types et des underscores aux noms de variables :
Ces trois membres ne devraient-ils pas être privés ?
-- ;-)
Alain Cabiran
On Tue, 26 Oct 2004 20:09:26 +0200, Alain Cabiran :
ce code ne compile pas et je ne comprend pas pourquoi
J'avoue que moi non plus, d'autant que Borland C++ 5.02, pourtant
jean marc avait raison, c'est typename qui manque, je l'ai pas encore bien assimilé celui là.
assez mauvais d'habitude avec les templates (car très vieux),
depuis que je suis passé (en force :-)) à gcc 3.0 j'ai plein d'erreurs de compil que j'avais pas avec gcc 2.95 mais bon c'est largement compensé par les amélioration de la conformit à la stl et au C++ standard.
l'accepte sans broncher. Indique le message d'erreur (y compris un repère sur la ligne concernée par le message), ainsi que le compilateur.
syntax error, effectivement sans typename, iterator est indéfini...
J'ai toutefois remarqué deux trucs passablement douteux dans ton code : snip ...
douteux est un euphémisme, c'est du code de porc (braisée, hhmf désolé, j'ai pas pu résister :-) ).
je crée des morceaux les plus petits possibles, sans contrôles particulier pour trouver ce qui ne va pas et ensuite je l'inclue dans la classe que je tente de créer (SortedList). Je suis obligé de passer par un aggrégat. std::list<mere> ne gère pas le polymorphisme seul std::list<Mere *> le gère et ça ne me convient pas du tout.
ouala
merci à vous, ça marche maintenant.
Alain
On Tue, 26 Oct 2004 20:09:26 +0200, Alain Cabiran <alain@yoko.priv>:
ce code ne compile pas et je ne comprend pas pourquoi
J'avoue que moi non plus, d'autant que Borland C++ 5.02, pourtant
jean marc avait raison, c'est typename qui manque, je l'ai pas encore
bien assimilé celui là.
assez mauvais d'habitude avec les templates (car très vieux),
depuis que je suis passé (en force :-)) à gcc 3.0 j'ai plein d'erreurs
de compil que j'avais pas avec gcc 2.95 mais bon c'est largement
compensé par les amélioration de la conformit à la stl et au C++
standard.
l'accepte sans broncher. Indique le message d'erreur (y compris un
repère sur la ligne concernée par le message), ainsi que le
compilateur.
syntax error, effectivement sans typename, iterator est indéfini...
J'ai toutefois remarqué deux trucs passablement douteux dans ton
code :
snip
...
douteux est un euphémisme, c'est du code de porc (braisée, hhmf désolé,
j'ai pas pu résister :-) ).
je crée des morceaux les plus petits possibles, sans contrôles
particulier pour trouver ce qui ne va pas et ensuite je l'inclue
dans la classe que je tente de créer (SortedList). Je suis obligé de
passer par un aggrégat. std::list<mere> ne gère pas le polymorphisme
seul std::list<Mere *> le gère et ça ne me convient pas du tout.
On Tue, 26 Oct 2004 20:09:26 +0200, Alain Cabiran :
ce code ne compile pas et je ne comprend pas pourquoi
J'avoue que moi non plus, d'autant que Borland C++ 5.02, pourtant
jean marc avait raison, c'est typename qui manque, je l'ai pas encore bien assimilé celui là.
assez mauvais d'habitude avec les templates (car très vieux),
depuis que je suis passé (en force :-)) à gcc 3.0 j'ai plein d'erreurs de compil que j'avais pas avec gcc 2.95 mais bon c'est largement compensé par les amélioration de la conformit à la stl et au C++ standard.
l'accepte sans broncher. Indique le message d'erreur (y compris un repère sur la ligne concernée par le message), ainsi que le compilateur.
syntax error, effectivement sans typename, iterator est indéfini...
J'ai toutefois remarqué deux trucs passablement douteux dans ton code : snip ...
douteux est un euphémisme, c'est du code de porc (braisée, hhmf désolé, j'ai pas pu résister :-) ).
je crée des morceaux les plus petits possibles, sans contrôles particulier pour trouver ce qui ne va pas et ensuite je l'inclue dans la classe que je tente de créer (SortedList). Je suis obligé de passer par un aggrégat. std::list<mere> ne gère pas le polymorphisme seul std::list<Mere *> le gère et ça ne me convient pas du tout.
ouala
merci à vous, ça marche maintenant.
Alain
Fabien LE LEZ
On Tue, 26 Oct 2004 21:58:18 +0200, Alain Cabiran :
jean marc avait raison, c'est typename qui manque, je l'ai pas encore bien assimilé celui là.
J'avoue que moi non plus ~_~ Mais bon, j'ai une excuse : n'ayant réellement commencé à étudier le C++ qu'il y a quatre ans environ, je suis encore un débutant...
-- ;-)
On Tue, 26 Oct 2004 21:58:18 +0200, Alain Cabiran <alain@yoko.priv>:
jean marc avait raison, c'est typename qui manque, je l'ai pas encore
bien assimilé celui là.
J'avoue que moi non plus ~_~
Mais bon, j'ai une excuse : n'ayant réellement commencé à étudier le
C++ qu'il y a quatre ans environ, je suis encore un débutant...
On Tue, 26 Oct 2004 21:58:18 +0200, Alain Cabiran :
jean marc avait raison, c'est typename qui manque, je l'ai pas encore bien assimilé celui là.
J'avoue que moi non plus ~_~ Mais bon, j'ai une excuse : n'ayant réellement commencé à étudier le C++ qu'il y a quatre ans environ, je suis encore un débutant...
-- ;-)
kanze
Fabien LE LEZ wrote in message news:...
On Tue, 26 Oct 2004 21:58:18 +0200, Alain Cabiran :
jean marc avait raison, c'est typename qui manque, je l'ai pas encore bien assimilé celui là.
J'avoue que moi non plus ~_~
Mais bon, j'ai une excuse : n'ayant réellement commencé à étudier le C++ qu'il y a quatre ans environ, je suis encore un débutant...
Je dirais que c'est plutôt toi qui a l'avantage. Moi, je me sers d'un langage qui s'appelle C++ depuis quinze ans. Ce qui fait que j'ai énormement à désapprendre -- le C++ d'aujourd'hui n'est qu'un parent lointain au C++ que j'ai appris. (Je dirais qu'il y a plus de différences entre le C++ d'aujourd'hui et celui j'ai appris -- grosso modo celui de CFront 2.1, qu'il n'y en a entre le C++ que j'ai appris et le C.)
-- James Kanze GABI Software http://www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Fabien LE LEZ <gramster@gramster.com> wrote in message
news:<9lctn0ld9isv2o7oeeva87eain4umtsbpk@4ax.com>...
On Tue, 26 Oct 2004 21:58:18 +0200, Alain Cabiran <alain@yoko.priv>:
jean marc avait raison, c'est typename qui manque, je l'ai pas encore
bien assimilé celui là.
J'avoue que moi non plus ~_~
Mais bon, j'ai une excuse : n'ayant réellement commencé à étudier le
C++ qu'il y a quatre ans environ, je suis encore un débutant...
Je dirais que c'est plutôt toi qui a l'avantage. Moi, je me sers d'un
langage qui s'appelle C++ depuis quinze ans. Ce qui fait que j'ai
énormement à désapprendre -- le C++ d'aujourd'hui n'est qu'un parent
lointain au C++ que j'ai appris. (Je dirais qu'il y a plus de
différences entre le C++ d'aujourd'hui et celui j'ai appris -- grosso
modo celui de CFront 2.1, qu'il n'y en a entre le C++ que j'ai appris et
le C.)
--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Tue, 26 Oct 2004 21:58:18 +0200, Alain Cabiran :
jean marc avait raison, c'est typename qui manque, je l'ai pas encore bien assimilé celui là.
J'avoue que moi non plus ~_~
Mais bon, j'ai une excuse : n'ayant réellement commencé à étudier le C++ qu'il y a quatre ans environ, je suis encore un débutant...
Je dirais que c'est plutôt toi qui a l'avantage. Moi, je me sers d'un langage qui s'appelle C++ depuis quinze ans. Ce qui fait que j'ai énormement à désapprendre -- le C++ d'aujourd'hui n'est qu'un parent lointain au C++ que j'ai appris. (Je dirais qu'il y a plus de différences entre le C++ d'aujourd'hui et celui j'ai appris -- grosso modo celui de CFront 2.1, qu'il n'y en a entre le C++ que j'ai appris et le C.)
-- James Kanze GABI Software http://www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Fabien LE LEZ
On 27 Oct 2004 00:43:29 -0700, :
Je dirais que c'est plutôt toi qui a l'avantage.
Pas forcément : ayant fait du C avant (pas pendant 15 ans, toutefois, vu que j'ai commencé avec Basic sur TO7 ;) ), mon cas n'est pas si différent du tien.
-- ;-)
On 27 Oct 2004 00:43:29 -0700, kanze@gabi-soft.fr:
Je dirais que c'est plutôt toi qui a l'avantage.
Pas forcément : ayant fait du C avant (pas pendant 15 ans, toutefois,
vu que j'ai commencé avec Basic sur TO7 ;) ), mon cas n'est pas si
différent du tien.
Pas forcément : ayant fait du C avant (pas pendant 15 ans, toutefois, vu que j'ai commencé avec Basic sur TO7 ;) ), mon cas n'est pas si différent du tien.