quelque part dans mon programme, le compilateur (ici, GCC 3.2) renvoie
une erreur de compilation en disant:
Fichier.cxx:100 No matching function for call to
NS::FILLE<float,float>::FILLE()
Candidates are .. (le constructeur de copie, et le constructeur ci
dessus)
Je ne comprends pas, j'ai l'impression qu'il ne "voit" pas l'argument
que je passe au constructeur!? ("2")
Notez qu'aucune des deux classes n'est virtuelle, mais ANCETRE oui.
C'est pas un bug par hasard?
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
Gourgouilloult
niko wrote:
Bonjour, j'ai un problème en essayant de compiler une application, je ne sais pas si je fais une erreur mais voici le code incriminé :
Soient les deux classes suivantes : [snip] Or si j'instancie FILLE:
NS::FILLE<float,float> fifille(2);
quelque part dans mon programme, le compilateur (ici, GCC 3.2) renvoie une erreur de compilation en disant:
Fichier.cxx:100 No matching function for call to NS::FILLE<float,float>::FILLE() Candidates are .. (le constructeur de copie, et le constructeur ci dessus)
Je ne comprends pas, j'ai l'impression qu'il ne "voit" pas l'argument que je passe au constructeur!? ("2")
Je ne comprends pas bien non plus. Est-ce que tu pourrais nous donner plus de renseignement ? En particulier sur ta classe ANCETRE (beuh, un identificateur tout en majuscules... pas bô ;). Concernant ton message d'erreur : de quelle ligne s'agit-il au juste ? Aussi, il devrait t'indiquer une série de messages "instantiated from here: ..." qui sont généralement bien utiles.
Notez qu'aucune des deux classes n'est virtuelle, mais ANCETRE oui. C'est pas un bug par hasard?
Pourrais-tu préciser ce que tu entends par là ? (Enfin, je ne crois pas ce soit un terme en soi... quelqu'un peut-il éventuellement m'éclairer ?) Tu veux dire que ANCETRE a une fonction «juste» virtuelle, ou virtuelle pure ? Dans le deuxième cas (je vais encore me décharger sur plus sage que moi ;), je ne suis pas certain que ANCETRE::ANCETRE(unsigned char const &) puisse être généré. Tu as définis ce constructeur ? Mais bon, comme tu dis que c'est le ctor de FILLE qui manque, ça m'a l'air d'une piste douteuse...
Merci pour toute aide!
En même temps, on ne fait que ce qu'on peut ;)
Niko
Gourgouilloult du Clapotis
niko wrote:
Bonjour,
j'ai un problème en essayant de compiler une application, je ne sais
pas si je fais une erreur mais voici le code incriminé :
Soient les deux classes suivantes :
[snip]
Or si j'instancie FILLE:
NS::FILLE<float,float> fifille(2);
quelque part dans mon programme, le compilateur (ici, GCC 3.2) renvoie
une erreur de compilation en disant:
Fichier.cxx:100 No matching function for call to
NS::FILLE<float,float>::FILLE()
Candidates are .. (le constructeur de copie, et le constructeur ci
dessus)
Je ne comprends pas, j'ai l'impression qu'il ne "voit" pas l'argument
que je passe au constructeur!? ("2")
Je ne comprends pas bien non plus. Est-ce que tu pourrais nous donner
plus de renseignement ? En particulier sur ta classe ANCETRE (beuh, un
identificateur tout en majuscules... pas bô ;). Concernant ton message
d'erreur : de quelle ligne s'agit-il au juste ? Aussi, il devrait
t'indiquer une série de messages "instantiated from here: ..." qui sont
généralement bien utiles.
Notez qu'aucune des deux classes n'est virtuelle, mais ANCETRE oui.
C'est pas un bug par hasard?
Pourrais-tu préciser ce que tu entends par là ? (Enfin, je ne crois pas
ce soit un terme en soi... quelqu'un peut-il éventuellement m'éclairer
?) Tu veux dire que ANCETRE a une fonction «juste» virtuelle, ou
virtuelle pure ? Dans le deuxième cas (je vais encore me décharger sur
plus sage que moi ;), je ne suis pas certain que
ANCETRE::ANCETRE(unsigned char const &) puisse être généré. Tu as
définis ce constructeur ? Mais bon, comme tu dis que c'est le ctor de
FILLE qui manque, ça m'a l'air d'une piste douteuse...
Bonjour, j'ai un problème en essayant de compiler une application, je ne sais pas si je fais une erreur mais voici le code incriminé :
Soient les deux classes suivantes : [snip] Or si j'instancie FILLE:
NS::FILLE<float,float> fifille(2);
quelque part dans mon programme, le compilateur (ici, GCC 3.2) renvoie une erreur de compilation en disant:
Fichier.cxx:100 No matching function for call to NS::FILLE<float,float>::FILLE() Candidates are .. (le constructeur de copie, et le constructeur ci dessus)
Je ne comprends pas, j'ai l'impression qu'il ne "voit" pas l'argument que je passe au constructeur!? ("2")
Je ne comprends pas bien non plus. Est-ce que tu pourrais nous donner plus de renseignement ? En particulier sur ta classe ANCETRE (beuh, un identificateur tout en majuscules... pas bô ;). Concernant ton message d'erreur : de quelle ligne s'agit-il au juste ? Aussi, il devrait t'indiquer une série de messages "instantiated from here: ..." qui sont généralement bien utiles.
Notez qu'aucune des deux classes n'est virtuelle, mais ANCETRE oui. C'est pas un bug par hasard?
Pourrais-tu préciser ce que tu entends par là ? (Enfin, je ne crois pas ce soit un terme en soi... quelqu'un peut-il éventuellement m'éclairer ?) Tu veux dire que ANCETRE a une fonction «juste» virtuelle, ou virtuelle pure ? Dans le deuxième cas (je vais encore me décharger sur plus sage que moi ;), je ne suis pas certain que ANCETRE::ANCETRE(unsigned char const &) puisse être généré. Tu as définis ce constructeur ? Mais bon, comme tu dis que c'est le ctor de FILLE qui manque, ça m'a l'air d'une piste douteuse...
Merci pour toute aide!
En même temps, on ne fait que ce qu'on peut ;)
Niko
Gourgouilloult du Clapotis
Niko
Le Tue, 14 Oct 2003 20:52:21 +0200, Gourgouilloult a écrit :
niko wrote:
Bonjour, j'ai un problème en essayant de compiler une application, je ne sais pas si je fais une erreur mais voici le code incriminé :
Soient les deux classes suivantes : [snip] Or si j'instancie FILLE:
NS::FILLE<float,float> fifille(2);
quelque part dans mon programme, le compilateur (ici, GCC 3.2) renvoie une erreur de compilation en disant:
Fichier.cxx:100 No matching function for call to NS::FILLE<float,float>::FILLE() Candidates are .. (le constructeur de copie, et le constructeur ci dessus) Je ne comprends pas, j'ai l'impression qu'il ne "voit" pas l'argument que je passe au constructeur!? ("2") Je ne comprends pas bien non plus. Est-ce que tu pourrais nous donner
plus de renseignement ? En particulier sur ta classe ANCETRE (beuh, un identificateur tout en majuscules... pas bô ;). Concernant ton message d'erreur : de quelle ligne s'agit-il au juste ? Aussi, il devrait t'indiquer une série de messages "instantiated from here: ..." qui sont généralement bien utiles.
En fait, je ne fournis effectivement pas assez d'infos. Le code ci-dessus (en rajoutant les commandes d'héritage :public parent) est en fait une reprise de la partie de mon projet, donc c'est forcément pas bô!
Il se trouve que le problème (encore plus vague?)
est que:
Le compilateur se plaint de ne pas trouver un constructeur
MERE: ANCETRE<t1,t2>() {}
alors que mon implémentation ne l'utilise pas. Pour compiler quand même, je l'ai défini aux côtés du premier
et ça compile. Quand je débugge l'executable, il n'utilise *jamais* le constructeur pour lequel il se plaignait.
Bref, je pense que le seul moyen de m'aider, c'est d'avoir eu le problème! Merci, Niko
Le Tue, 14 Oct 2003 20:52:21 +0200, Gourgouilloult a écrit :
niko wrote:
Bonjour,
j'ai un problème en essayant de compiler une application, je ne sais
pas si je fais une erreur mais voici le code incriminé :
Soient les deux classes suivantes :
[snip]
Or si j'instancie FILLE:
NS::FILLE<float,float> fifille(2);
quelque part dans mon programme, le compilateur (ici, GCC 3.2) renvoie
une erreur de compilation en disant:
Fichier.cxx:100 No matching function for call to
NS::FILLE<float,float>::FILLE()
Candidates are .. (le constructeur de copie, et le constructeur ci
dessus)
Je ne comprends pas, j'ai l'impression qu'il ne "voit" pas l'argument
que je passe au constructeur!? ("2")
Je ne comprends pas bien non plus. Est-ce que tu pourrais nous donner
plus de renseignement ? En particulier sur ta classe ANCETRE (beuh, un
identificateur tout en majuscules... pas bô ;). Concernant ton message
d'erreur : de quelle ligne s'agit-il au juste ? Aussi, il devrait
t'indiquer une série de messages "instantiated from here: ..." qui sont
généralement bien utiles.
En fait, je ne fournis effectivement pas assez d'infos. Le code ci-dessus
(en rajoutant les commandes d'héritage :public parent) est en fait une
reprise de la partie de mon projet, donc c'est forcément pas bô!
Il se trouve que le problème (encore plus vague?)
est que:
Le compilateur se plaint de ne pas trouver un constructeur
MERE: ANCETRE<t1,t2>() {}
alors que mon implémentation ne l'utilise pas. Pour compiler quand même,
je l'ai défini aux côtés du premier
Le Tue, 14 Oct 2003 20:52:21 +0200, Gourgouilloult a écrit :
niko wrote:
Bonjour, j'ai un problème en essayant de compiler une application, je ne sais pas si je fais une erreur mais voici le code incriminé :
Soient les deux classes suivantes : [snip] Or si j'instancie FILLE:
NS::FILLE<float,float> fifille(2);
quelque part dans mon programme, le compilateur (ici, GCC 3.2) renvoie une erreur de compilation en disant:
Fichier.cxx:100 No matching function for call to NS::FILLE<float,float>::FILLE() Candidates are .. (le constructeur de copie, et le constructeur ci dessus) Je ne comprends pas, j'ai l'impression qu'il ne "voit" pas l'argument que je passe au constructeur!? ("2") Je ne comprends pas bien non plus. Est-ce que tu pourrais nous donner
plus de renseignement ? En particulier sur ta classe ANCETRE (beuh, un identificateur tout en majuscules... pas bô ;). Concernant ton message d'erreur : de quelle ligne s'agit-il au juste ? Aussi, il devrait t'indiquer une série de messages "instantiated from here: ..." qui sont généralement bien utiles.
En fait, je ne fournis effectivement pas assez d'infos. Le code ci-dessus (en rajoutant les commandes d'héritage :public parent) est en fait une reprise de la partie de mon projet, donc c'est forcément pas bô!
Il se trouve que le problème (encore plus vague?)
est que:
Le compilateur se plaint de ne pas trouver un constructeur
MERE: ANCETRE<t1,t2>() {}
alors que mon implémentation ne l'utilise pas. Pour compiler quand même, je l'ai défini aux côtés du premier
sur gcc 3.3.1 (portage mingw32) le code suivant compile et linke parfaitement
Et il devrait pas ?
Chris
kanze
"Christophe Lephay" wrote in message news:<bmr8r0$agv$...
Mathieu Peyréga wrote:
sur gcc 3.3.1 (portage mingw32) le code suivant compile et linke parfaitement
Et il devrait pas ?
Je ne vois pas pourquoi. C'est un exemple d'héritage on ne peut plus classique.
Mais le posteur original nous a parlé d'un héritage virtuel (tout en gardant secrèt où) -- si MERE hérite virtuellement de ANCETRE, le code est illégal.
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
"Christophe Lephay" <christophe-lephay@wanadoo.fr> wrote in message
news:<bmr8r0$agv$1@news-reader5.wanadoo.fr>...
Mathieu Peyréga wrote:
sur gcc 3.3.1 (portage mingw32) le code suivant compile et linke
parfaitement
Et il devrait pas ?
Je ne vois pas pourquoi. C'est un exemple d'héritage on ne peut plus
classique.
Mais le posteur original nous a parlé d'un héritage virtuel (tout en
gardant secrèt où) -- si MERE hérite virtuellement de ANCETRE, le code
est illégal.
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
"Christophe Lephay" wrote in message news:<bmr8r0$agv$...
Mathieu Peyréga wrote:
sur gcc 3.3.1 (portage mingw32) le code suivant compile et linke parfaitement
Et il devrait pas ?
Je ne vois pas pourquoi. C'est un exemple d'héritage on ne peut plus classique.
Mais le posteur original nous a parlé d'un héritage virtuel (tout en gardant secrèt où) -- si MERE hérite virtuellement de ANCETRE, le code est illégal.
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16