Salut à tous.
Je viens de faire face à une erreur que je ne comprend absolument pas, et je me demandais si certains pouvaient m'éclairer. J'ai résolu le probleme mais sans comprendre pourquoi alors ca me chagrine...
Voici le probleme:
En gros, j'ai 2 classe, A et B avec B qui dérive de A (A est la classe parent).
je récupere un pointeur sur B que j'essai de stocker dans un CArray contenant des pointeurs sur A (CArray<A*, A*>). Comme B dérive de A, cela me semble logique. Or, VC6 me sort une erreur sur la ligne suivante:
monCArray->Add(monPtSurB);
=> error C2664: 'Add' : cannot convert parameter 1 from 'class CNetMobile *' to 'class CZoneGuardedMobile *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Je me dit "tiens c'est bizarre", je vais ruser en castant . Je modifie l'instruction comme suis:
monCArray->Add((A*)monPtSurB);
=> la compilation passe, mais par contre, il crashe à l'exécution.
La solution consiste juste à lui rajouter #include "B.h". A ce moment là, l'instruction comme ecrite la 1ere fois passe sans probleme. Bizarre comme probleme et messages d'erreur, non ???
Partager