我使用的是Visual-C++ 2013(但是这个标签在这里似乎不可用)。
我有一个结构
struct init_param{
bool (*validation)(double**);
};
我想转换一个成员函数 ValidateParameters
实例的 model
。所以我尝试使用 Lambda 表达式:
init_params params;
params.validation = [&model](double **par){return model.ValidateParameters(par); };
但是编译器说:
error C2440: '=': 'main::< lambda_d8b99bf9b28e45558a48b7e9148b3202>' can not be converted into 'bool (__cdecl *)(double **)'
如何进行?
或者更改init_param
的最简单方法是什么? struct,那个 Lambda 表达式可以工作吗?
最佳答案
您可能只需将 validation
更改为 std::function 对象即可:
#include <functional>
struct init_param
{
std::function<bool(double**)> validation;
};
关于c++ - 将 Lambda 表达式转换为函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28263102/