std::function
我可以通过使用带有捕获子句的 lambda 表达式包装成员函数来轻松地将它们绑定到 a 。
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:“换行符”:无法从“int”转换为“类 *”
错误 C2647:“.*”:无法取消引用“int”上的“void (__thiscall Class::*)(int)”