c++ - 类函数指针作为参数

标签 c++ function pointers parameters

<分区>

Possible Duplicate:
How to best pass methods into methods of the same class

我在传递函数指针作为参数时从未遇到过问题。这有效:

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’”。

最佳答案

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

您需要阅读有关 Pointer-to-Member Functions 的内容.

关于c++ - 类函数指针作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13652223/

相关文章:

c++ - 如何使用代码块在 mac osx 上清除终端屏幕 c++?

c++ - 如何根据返回类型选择重载

C++编译时多态疑惑?

javascript - 下面的 JavaScript 函数代码中 '$(this)' 包含什么?

function - 表达式与函数之间的差异

c++ - 在 OpenMP 中增加共享循环计数器以进行进度报告

PHP/MySQL 删除用户 - 函数

c - 从C中的函数获取返回值

c++ - 通过其抽象基类的指针返回派生类对象

c - 无法理解的指针错误