c++ - std::function -> 函数指针

标签 c++ bind functor

代码如下:

#include <functional>
using namespace std::tr1;

typedef void(*fp)(void);

void foo(void)
{

}

void f(fp)
{

}

int main()
{
  function<void(void)> fun = foo;
  f(fun); // error
  f(foo); // ok
}

最初我需要从非静态类方法创建一个函数指针,因为我需要在函数调用之间保存数据。我尝试了 std::tr1::bindboost::bind,但它们返回的是功能对象,而不是指针,正如我所见,这不能是“类型转换”到纯功能指针。而函数签名 (SetupIterateCabinet) 恰恰需要一个纯函数指针。

我需要一个解决问题的建议。谢谢。

最佳答案

您不能将 std::function 转换为函数指针(您可以反其道而行之)。您应该使用函数指针或 std::function。如果您可以使用 std::function 而不是指针,那么您应该这样做。

这使您的代码工作:

typedef function<void(void)> fp;

关于c++ - std::function -> 函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10555464/

相关文章:

c++ - 线程创建操作是否暗示发生在关系之前?

c++ - 减少 std::bind 模板代码膨胀?

haskell - 使数据类型成为 Functor 的实例以映射到参数类型的字段

vb.net - 如何将函数传递给函数? VB 2010 中是否提供仿函数/函数对象?

c++ - 使用 std::bind 调用 std::string 方法

c++ - Windows环境下的Chromium调试

c++ - QListWidgdet resizeEvent QPainter::begin: Paint 设备返回 engine == 0, type: 2

c++ - 从基类的特定派生类型调用特定函数

css - 如何从 json 数据设置动态类名?

javascript - Backbone.Marionette 上下文中的事件绑定(bind)