指针混乱

问题描述

| 我是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&)
我该如何正确处理?     

解决方法

        你可能要做
  a->foo(*b);
因为foo引用b而不是b的指针。 C ++中的指针变量和引用变量之间有什么区别?是学习C ++中的指针和引用之间区别的好地方     ,        您正在调用一个函数,该函数期望使用指向该对象的指针(该对象是不兼容的类型)进行引用。要编译代码,您需要这样调用foo:
a->foo(*b);
本质上,您是在取消引用指针以获取实际对象并将该对象传递给
foo
。编译器负责将引用传递给对象,而不是对象本身。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...