C++ 调用一个函数,该函数期望使用此指针获得自身实例的地址
我试图创建一个函数,该函数被传递给它所属的类的一个实例。我知道我可以用C++ 调用一个函数,该函数期望使用此指针获得自身实例的地址,c++,function,this,C++,Function,This,我试图创建一个函数,该函数被传递给它所属的类的一个实例。我知道我可以用这个指针来完成,但我不知道如何调用该函数。感谢您的帮助!这是我的代码: A.h级 ClassA{ public: int Send(Foo &myFoo, ClassB &classb); } ClassA{ public: int Send(const Foo &myFoo, ClassB &classb
这个
指针来完成,但我不知道如何调用该函数。感谢您的帮助!这是我的代码:
A.h级
ClassA{
public:
int Send(Foo &myFoo, ClassB &classb);
}
ClassA{
public:
int Send(const Foo &myFoo, ClassB &classb);
}
ClassA.cpp
int ClassA::Send(Foo &myFoo, ClassB &classb)
{
...
}
int ClassA::Send(const Foo &myFoo, ClassB &classb)
{
...
}
类别b.cpp
void function(const Foo &thisFoo){
ClassA myClassA;
int ret = myClassA.Send(&thisFoo, *this);
}
void function(const Foo &thisFoo){
ClassA myClassA;
int ret = myClassA.Send(thisFoo, *this);
}
我最终会出现以下错误:
调用“ClassB::Send(const Foo*,ClassB&)”时没有匹配的函数
编辑:谢谢你的输入!当我让ClassA在Send()中使用const Foo时,它就可以工作了
A.h级
ClassA{
public:
int Send(Foo &myFoo, ClassB &classb);
}
ClassA{
public:
int Send(const Foo &myFoo, ClassB &classb);
}
ClassA.cpp
int ClassA::Send(Foo &myFoo, ClassB &classb)
{
...
}
int ClassA::Send(const Foo &myFoo, ClassB &classb)
{
...
}
类别b.cpp
void function(const Foo &thisFoo){
ClassA myClassA;
int ret = myClassA.Send(&thisFoo, *this);
}
void function(const Foo &thisFoo){
ClassA myClassA;
int ret = myClassA.Send(thisFoo, *this);
}
&thisFoo生成thisFoo对象的地址。它的类型为Foo*。 您需要这样做:
int ret = myClassA.Send(thisFoo, *this);
编辑:
不能使用thisFoo参数调用myClassA.Send(),因为thisFoo被声明为常量引用。
因此,您必须使这个Foo参数非常量,或者(这有点奇怪)传递它的副本,或者进行常量转换,您可以发布一些有意义的代码吗?1)
函数()
接受一个常量Foo&
,然后尝试传递一个非常量Foo&
(也就是说,发送()
接受一个非常量Foo&
,但您给它一个类型为const Foo*
的指针,这是双重问题)。2) ClassB
是否源自ClassA
?除了ClassA::Send
没有将ClassB
作为第二个参数。@juanchopanza你确定吗?@DesmondHume发布的代码中没有任何东西让我相信这一点。再说一遍,在发布的代码中没有什么是有意义的。