我正在尝试将一个函数交给它所属的类的实例。我知道我可以使用this
指针来完成它,但我不知道如何调用该函数。任何帮助表示赞赏!这是我的代码:
ClassA.h
ClassA{
public:
int Send(Foo &myFoo, ClassB &classb);
}
ClassA.cpp
int ClassA::Send(Foo &myFoo, ClassB &classb)
{
...
}
ClassB.cpp
void function(const Foo &thisFoo){
ClassA myClassA;
int ret = myClassA.Send(&thisFoo, *this);
}
我最终得到了这个错误: 没有匹配函数来调用'ClassB :: Send(const Foo *,ClassB&)'
编辑:感谢您的投入!当我让ClassA期望在Send()中使用const Foo时,它可以工作。
ClassA.h
ClassA{
public:
int Send(const Foo &myFoo, ClassB &classb);
}
ClassA.cpp
int ClassA::Send(const Foo &myFoo, ClassB &classb)
{
...
}
ClassB.cpp
void function(const Foo &thisFoo){
ClassA myClassA;
int ret = myClassA.Send(thisFoo, *this);
}
答案 0 :(得分:1)
& thisFoo导致thisFoo对象的地址。它有类型Foo *。 你需要这样做:
int ret = myClassA.Send(thisFoo, *this);
修改强>: 你不能用thisFoo参数调用myClassA.Send(),因为thisFoo被声明为const引用。 所以你必须使thisFoo参数非const,或者(有点奇怪)传递它的副本,或者做一个const_cast