Atmaweapon
Messages postés50Date d'inscriptiondimanche 28 décembre 2003StatutMembreDernière intervention11 avril 2006
-
9 juin 2005 à 15:18
Atmaweapon
Messages postés50Date d'inscriptiondimanche 28 décembre 2003StatutMembreDernière intervention11 avril 2006
-
10 juin 2005 à 09:41
Bonjour, j'aimerais que vous m'aidiez a résoudre une erreur de
compilation dont je connais la "raison" (enfin je crois) mais pas la
"correction"
Pour résumer :
class A
{
// ....
}
class B : A
{
// ....
}
class C
{
bool uneFontion(A **aRetour);
}
J'utilise "uneFonction" qui va me retourner un booléen (par exemple
disant si tout s'est bien passé ...) mais également un pointeur sur A
(d'où les 2 * .. passage en "entrée sortie") qui sera construit dans
uneFonction
Le probleme vient du fait que je passe un B** a cette fonction ... et le compilateur me jette !
j'ai essayé plusieurs cas de figure en vain :
B** test;
uneFonction(test);
uneFonction(&((A*)*test));
... mais aucune des deux ne marche :
error C2664: 'C::uneFonction' : cannot convert parameter 1 from 'B**__w64 ' to 'A ** '
Atmaweapon
Messages postés50Date d'inscriptiondimanche 28 décembre 2003StatutMembreDernière intervention11 avril 20061 9 juin 2005 à 15:24
nota : je ne peux "changer" le prototype de uneFonction pour faire
retourner un B** au lieu d'un A** car j'ai une 2eme classe qui hérite
de A et qui "passe" par par uneFonction ...
Une solution serait de faire (je suppose) 2 méthodes dans C :
bool uneFonction(B** b);
bool uneFonction(D** d); // D hérite de A
... mais je me pose la question de savoir s'il n'est pas possible de faire tout en un :)
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 9 juin 2005 à 17:15
Tu peux essayer avec une référrnce mais je ne suis pas sur du truc. Ou metrre un bool* en param et retourner un A*
Par contre je comprend pas trop comment tu va créer ton objet. Ta fonction attent un pointeur de pointeur sur A pour créer le pointeur en question tu va faire new A ou new B et sur quel critére ?
Atmaweapon
Messages postés50Date d'inscriptiondimanche 28 décembre 2003StatutMembreDernière intervention11 avril 20061 10 juin 2005 à 09:41
bon j'ai palié a mon probleme, comme tu dis, en passantun bool & en parametre, et retournant un A* ...
Cela dit ça m'intrigue tout de meme cette erreur de compilation !
(pour répondre a ta deuxieme question, mon objet C "savait" (de par son
initialisation) quel objet produire dans uneFonction : donc a
l'intérieur, je faisais un new B ou un new D (suivant l'initialisation
de C ... mais je n'avais jamais rien "d'incohérent")