Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 调用一个函数,该函数期望使用此指针获得自身实例的地址_C++_Function_This - Fatal编程技术网

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发布的代码中没有任何东西让我相信这一点。再说一遍,在发布的代码中没有什么是有意义的。