绑定函数与参数作为派生类

时间:2014-12-25 22:17:16

标签: c++ function c++11

我正在尝试使用派生参数绑定std::function。我想要绑定的函数如下所示:

void Application::myFunction(Derived *derived) { }

函数我试图传递给这个函数(但是绑定)看起来像这样:

void Storage::register(int number, std::function<void(Base *base)>) { }

我这样做(this关键字在此上下文中为Application):

myStorage->register(0, std::bind(&Application::myFunction, this, std::placeholders::_1);

但这给了我错误:

  

错误:没有匹配的调用函数(Storage :: register ...)

知道我做错了什么吗?谢谢!

1 个答案:

答案 0 :(得分:3)

这不起作用,因为std::function<void(Base*)>并不能保证始终使用Derived*调用它。您不能再这样做,而是可以直接使用Application::myFunction致电Base*

根据您想要实现的目标,将其设为std::function<void(Derived *)>myFunction使用Base*