使用this指针调用一个期望其自身实例的地址的函数

时间:2012-11-20 14:44:25

标签: c++ function this

我正在尝试将一个函数交给它所属的类的实例。我知道我可以使用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);
}

1 个答案:

答案 0 :(得分:1)

& thisFoo导致thisFoo对象的地址。它有类型Foo *。 你需要这样做:

int ret =  myClassA.Send(thisFoo, *this);

修改: 你不能用thisFoo参数调用myClassA.Send(),因为thisFoo被声明为const引用。 所以你必须使thisFoo参数非const,或者(有点奇怪)传递它的副本,或者做一个const_cast