 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Bruno Causse Guest
|
Posted: Thu Jan 19, 2006 8:29 pm Post subject: itoa |
|
|
bonsoir,
par quoi remplacer cette fonction, j'ai lu quelle n'etait pas portable
(Dos), vous devez avoir une routine?
de plus cette fonction est dans une methode template et je ne comprend
pas le warning :-(
warning: there are no arguments to 'itoa' that depend on a template
parameter, so a declaration of 'itoa' must be available
merci
--
Bruno Causse
http://perso.wanadoo.fr/othello
|
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
Posted: Thu Jan 19, 2006 8:33 pm Post subject: Re: itoa |
|
|
On Thu, 19 Jan 2006 21:29:12 +0100, [email]pasde.hcyrano.spam (AT) free (DOT) fr[/email] (Bruno
Causse):
| Quote: | Subject: itoa
par quoi remplacer cette fonction
|
Section 27.1 de la FAQ.
http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/
| Quote: | there are no arguments to 'itoa' that depend on a template
parameter, so a declaration of 'itoa' must be available
|
Le compilateur a rencontré l'appel à une fonction "itoa" qui n'existe
pas. Typiquement, tu as oublié un #include quelque part.
Mais j'admets que le message d'erreur n'est pas très explicite.
|
|
| Back to top |
|
 |
Jean-Marc Bourguet Guest
|
Posted: Thu Jan 19, 2006 8:47 pm Post subject: Re: itoa |
|
|
[email]pasde.hcyrano.spam (AT) free (DOT) fr[/email] (Bruno Causse) writes:
| Quote: | bonsoir,
par quoi remplacer cette fonction, j'ai lu quelle n'etait pas portable
(Dos), vous devez avoir une routine?
|
stringstream
| Quote: | de plus cette fonction est dans une methode template et je ne comprend
pas le warning :-(
warning: there are no arguments to 'itoa' that depend on a template
parameter, so a declaration of 'itoa' must be available
|
Comme il n'y a aucun argument de itoa qui dépend d'un
paramètre template, une déclaration de itoa doit être
disponible. Seuls les noms qui dépendent d'un paramètre
template sont cherchés dans le contexte d'instantiation, les
autres ne sont cherchés que dans le contexte de définition
du template. C'était aussi la source de ton autre problème:
TMsgJoin ne dépendait pas d'un paramètre template dont il
fallait une définition disponible; comme la définition en
fait dépendait d'un paramètre template, j'ai rendu ce fait
explicite.
Je crains être confu. Reprenons à partir du début.
Dans un template quand on trouve un nom, il faut chercher
une définition (si elle ne se trouve pas dans le template
bien sûr). On peut les chercher à deux endroits: soit dans
le contexte de la définition du template, soit dans le
contexte de l'instantiation du template.
Certains noms sont indépendants des paramètres
templates, c'est à dire que rien dans leur utilisation
dépend des paramètres templates. C'était le cas de
TMsgJoin, c'est aussi le cas d'un appel:
f(e1, e2);
si e1 et e2 n'ont pas des types qui dépendent d'un paramètre
template. Ces noms sont cherchés uniquement dans le
contexte de la définition du template.
D'autres noms sont dépendants d'un ou plusieurs paramètres
templates. Par exemple si un des arguments d'une fonction a
pour type un paramètre template. Ces noms sont cherchés
aussi dans le contexte d'instantiation.
Quelque chose de particulier: si une classe template dérive
d'un paramètre template, les noms non qualifiés ne seront
pas cherchés dans cette classe de base (c'est pourquoi
TMsgJoin n'était pas trouvé). Il faut alors rendre ces noms
dépendants. Pour les membres non types, c'est facile on
utilise this->.
La règle de ne pas recherché les noms indépendants hors du
contexte de définition a été implémentées par gcc qu'à
partir de 3.4 me semble-t'il.
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
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|