Je suis assez novice en C++, et j'ai une erreur que je ne comprends pas.Pointer confusion
class1* a = (class1*)p1;
class2* b = (class2*)p2;
a->foo(b);
L'erreur est:
error: no matching function for call to 'a::foo(b*&)'
note: candidates are: void a::foo(const b&)
Comment puis-je obtenir ce droit?
Il est évident à partir du message d'erreur que le code que vous nous avez montré n'est pas le même que celui que vous avez essayé de compiler. Dans le futur, montrez-nous votre code * réel *, pas une approximation de-mémoire. – ildjarn
@ildjam: Je pense en fait que le message d'erreur est assez lié au code présenté: essayer d'appeler une méthode 'foo' de la classe' a' en utilisant comme argument une lvalue de type 'b *', qui correspond 'a -> foo (b) 'parfaitement. –
@dribeas: sauf qu'entre le code réel et cette question, le type 'a' a été renommé' class1' et 'b' en' class2', puis les variables nommées d'après les anciens noms de types. –