c++ - 将 Lambda 表达式转换为函数指针

标签 c++ visual-c++ c++11 visual-studio-2013 lambda

我使用的是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/

相关文章:

c - 如何在 Visual Studio 项目中引用用户定义段的开始?

c++ - 将已删除的函数声明为 noexcept 有什么意义吗?

c++ - 在C++中声明一个较大的全局变量会导致错误消息0xc0000018

c++ - 如何捕获范围错误的 out_of_range 异常( vector 差一错误)

c++ - 如何更新使用 C++ 中的 ATL OLE 数据库从简单的 SQL 服务器表中获取的行数据

angular - 从函数返回 vector 作为自动

c++ - 存在用户定义的析构函数时如何禁用隐式定义的复制构造函数生成

c++ - c++/c++11 中的 bool()、int() 和 double() 是什么?

c++ - 从静态方法访问类的私有(private)成员变量

c++ - 在 Visual Studio 中放置并插入 unordered_map?