传递函数返回 void * 作为参数
pass function returning void * as argument
我想传递一个函数作为参数并将 void *
返回给另一个函数。
现在我有以下代码:
MyClass *MyClass::bind(std::function<void*(void *)> fun) {
this->value = fun(this->value);
return this;
}
value
是 MyClass
中的一个 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 隐式转换为函数指针。
我想传递一个函数作为参数并将 void *
返回给另一个函数。
现在我有以下代码:
MyClass *MyClass::bind(std::function<void*(void *)> fun) {
this->value = fun(this->value);
return this;
}
value
是 MyClass
中的一个 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 隐式转换为函数指针。