Я могу легко связать функции-члены с std::function
, обернув их с помощью лямбда-выражения с предложением заголовка.
class Class
{
Class()
{
Register([=](int n){ Function(n); });
}
void Register(std::function<void(int)> Callback)
{
}
void Function(int Number)
{
}
};
Но я хочу связать их напрямую, что-то вроде следующего.
// ...
Register(&Class::Function);
// ...
Я думаю, согласно стандарту С++ 11, это должно поддерживаться. Однако в Visual Studio 11 я получаю эти ошибки компилятора.
error C2440: 'newline': невозможно преобразовать из 'int' в 'Class *'
ошибка C2647: '. *': не может разыменовать 'void (__thiscall Class:: *) (int)' в 'int'