传递函数返回 void * 作为参数

pass function returning void * as argument

我想传递一个函数作为参数并将 void * 返回给另一个函数。 现在我有以下代码:

MyClass *MyClass::bind(std::function<void*(void *)> fun) {
    this->value = fun(this->value);
    return this;
}

valueMyClass 中的一个 void * 变量,我不知道如何将函数传递给我的函数 bind.
当我尝试将函数名称传递给它时

auto *class = new MyClass();
class->bind(fooFunction);

我收到错误

no viable conversion from '<overloaded function type>' to 'std::function<void *(void *)>'

有没有什么方法可以用这段代码实现我想要的,或者是否存在更简单的方法?

您有多个 fooFunction.

重载

使用只有一个重载(与签名匹配)的函数名称。

或者,将其包装在 lambda 中:

auto *bob = new MyClass();
bob->bind([](void*ptr)->void*{return fooFunction(ptr);});

并依赖无状态 lambda 隐式转换为函数指针。