如何解决指针混乱
| 我是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
。编译器负责将引用传递给对象,而不是对象本身。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。