无法转换参数std :: bind

时间:2017-08-21 13:16:30

标签: c++ c++11 std-function stdbind

我在尝试将函数绑定到std :: function typedef时遇到问题,我希望有人可以帮我找到错误。代码非常简单。我有一个SerialConnection类,有一些事情正在进行,但这里有重要的东西:

class SerialConnection : public ConnectionBase
{
public:
    typedef std::function<std::shared_ptr<Session>(const Session:SerialSocket&) SerialFactory;

    Result Initialize(const SerialConfiguration& config, const SerialFactory session_factory);
}

然后我有另一个具有以下函数定义的类:

class MyPlugin : public PluginBase
{
public:
    std::shared_ptr<Connections::Session> SessionFactory(const Connections::Session::SerialSocket &socket);
}
然后我尝试将此函数绑定到类型定义的SerialFactory,如下所示:

_serialConnection->Initialize(_serialConfig, std::bind(&MyPlugin::SessionFactory, std::placeholders::_1));

这导致我出现以下错误:

  

Connections :: Result Connections :: SerialConnection :: Initialize(const Connections :: SerialConfiguration&amp;,const Connections :: SerialConnection :: SerialFactory)':无法从'std :: _ Binder(__ cdecl MyPlugin :: *)转换参数2 (const Connections :: Session :: SerialSocket&amp;),const std :: _ Ph&lt; 1&gt; &安培;&GT;”到'const Connections :: SerialConnection :: SerialFactory'

我在许多地方对类型定义的std :: function使用std :: bind,但这是唯一一个给我带来麻烦的东西。有谁看到问题可能是什么?

提前致谢。

0 个答案:

没有答案