【发布时间】:2017-12-22 03:39:17
【问题描述】:
如果我有一个带有子类 SetConfigurationData 的基类 MessageWrapper,为什么与子类参数绑定不起作用?
它不应该多态地工作吗?
Class MessageHandler
{
public:
void RegisterHandler(std::function<void(MessageWrapper &)> callback_)
{}
};
class Testing
{
public:
Testing(MessageHandler &handler_)
: m_Handler(handler_)
{
m_Handler.RegisterHandler(std::bind(&Testing::TestMessageHandler, this, std::placeholders::_1));
}
void TestMessageHandler(SetConfigurationData &msg_)
{}
MessageHandler m_Handler;
};
我得到错误: "无法专门化函数模板 'unkown-type std::invoke(Callable &&, Types &&..)'
如果我这样做,它会起作用:
void TestMessageHandler(MessageWrapper &msg_)
{}
【问题讨论】:
-
Title nitpick:你不是在绑定 from 派生类,而是在尝试绑定协变函数。
标签: c++ std-function stdbind