【发布时间】:2013-06-12 11:27:05
【问题描述】:
我可以轻松地将成员函数绑定到 std::function,方法是使用带有捕获子句的 lambda 表达式包装它们。
class Class
{
Class()
{
Register([=](int n){ Function(n); });
}
void Register(std::function<void(int)> Callback)
{
}
void Function(int Number)
{
}
};
但我想直接绑定它们,如下所示。
// ...
Register(&Class::Function);
// ...
我觉得按照C++11标准,这个应该是支持的。但是,在 Visual Studio 11 中,我得到了这些编译器错误。
错误 C2440: 'newline' : 无法从 'int' 转换为 'Class *'
错误 C2647: '.*' : 无法取消引用 'int' 上的 'void (__thiscall Class::* )(int)'
【问题讨论】:
标签: c++ c++11 member-functions std-function