指针混乱

时间:2011-05-31 21:48:49

标签: c++ pointers

我是C ++的新手,我遇到了一个我不明白的错误。

class1* a = (class1*)p1;
class2* b = (class2*)p2;
a->foo(b);

错误是:

error: no matching function for call to 'a::foo(b*&)'
note: candidates are: void a::foo(const b&)

我如何做到这一点?

2 个答案:

答案 0 :(得分:10)

您可能必须这样做

  a->foo(*b);

因为foo引用b而不是b的指针。

What are the differences between a pointer variable and a reference variable in C++?是学习C ++中指针和引用之间区别的好地方

答案 1 :(得分:4)

您正在调用一个函数,该函数需要引用一个带有指向所述对象的指针的对象(这是一种不兼容的类型)。要获取要编译的代码,您需要像这样调用foo:

a->foo(*b);

基本上你是取消引用指针来获取实际对象并将其传递给foo。编译器负责传递对象的引用而不是对象本身。