如何用数组创建std :: function?

时间:2016-05-21 14:20:25

标签: c++ visual-c++

我试图用整数做一系列函数。

我最终使用了这段代码:std::function<void()> func[100];

但是当我试图像这样写入数组时:

func[option] = draw("optionName", 255);

我收到此错误:

Error   C2679   binary '=': no operator found which takes a right-hand operand of type 'void' (or there is no acceptable conversion

编辑:

现在我使用此代码将函数写入数组:

func[option] = std::bind(draw, "optionName", 255);

但现在它给了我这些错误:

Error   C2672   'std::invoke': no matching overloaded function found (compiling source file source.cpp) Project C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\type_traits  1491    
Error   C2893   Failed to specialize function template 'unknown-type std::invoke(_Callable &&,_Types &&...)' (compiling source file source.cpp) Project C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\type_traits  1491    

1 个答案:

答案 0 :(得分:1)

您的代码尝试调用该函数并将结果分配给数组。

如果您想使用特定参数分配函数调用,std::bind将帮助您完成此操作。

  

函数模板bind为f生成转发调用包装器。调用这个包装器等同于调用f,其中一些参数绑定到args。