2

可能重复:
如何最好地将方法传递给同一类的方法

我从来没有遇到过将函数指针作为参数传递的问题。这有效:

void functionThatTakesFPTR(void(*function)(int), int someValue){ 
    function(someValue);
   }

void printValue(int value){
    std::printf("%d",value);
}

int main(int argc, char** argv){
    functionThatTakesFPTR(&printValue, 8);

    return EXIT_SUCCESS;
}

但是,传递对象函数不会

void MyClass::setter(float value){ }

void MyClass::testFunction(void(*setterPtr)(float)){ }

void MyClass::someFunc(){
     testFunction(&(this->setter));
}

对我来说,这看起来像是传递 this 的地址而不是函数,我有点困惑。有可能这样做吗?是否可以传递另一个类(实例 MyClass2)的对象的函数指针?

编辑:我得到的错误是“类'MyClass'没有成员'setter'”。

4

1 回答 1

8

问题是对方法的调用还需要对类实例的引用。您不能像独立函数那样简单地调用类方法。

您需要阅读Pointer-to-Member Functions

于 2012-11-30T20:00:11.510 回答