-1

我正在尝试拥有一个函数,该函数被传递给它所属的类的一个实例。我知道我可以用this指针做到这一点,但我不知道如何调用该函数。任何帮助表示赞赏!这是我的代码:

类A.h

ClassA{
     public:
         int Send(Foo &myFoo, ClassB &classb);
}

A类.cpp

int ClassA::Send(Foo &myFoo, ClassB &classb)
{
...
}

B类.cpp

void function(const Foo &thisFoo){
 ClassA myClassA;
 int ret =  myClassA.Send(&thisFoo, *this);
}

我最终得到了这个错误:没有匹配函数调用 'ClassB::Send(const Foo*, ClassB&)'</p>

编辑:感谢您的输入!当我让 ClassA 期望 Send() 中的 const Foo 时,它起作用了。

类A.h

ClassA{
             public:
                 int Send(const Foo &myFoo, ClassB &classb);
        }

A类.cpp

int ClassA::Send(const Foo &myFoo, ClassB &classb)
{
...
}

B类.cpp

void function(const Foo &thisFoo){
 ClassA myClassA;
 int ret =  myClassA.Send(thisFoo, *this);
}
4

1 回答 1

1

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

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

编辑:您不能使用 thisFoo 参数调用 myClassA.Send() ,因为 thisFoo 被声明为 const 引用。因此,您必须将 thisFoo 参数设为非 const,或者(这有点奇怪)传递它的副本,或者执行 const_cast

于 2012-11-20T14:50:20.200 回答