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

pass function returning void * as argument

本文关键字:参数 函数 返回 void      更新时间:2023-10-16

我想传递一个函数作为参数并将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 隐式强制转换来函数指针。