Я могу легко связать функции-члены с 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 я получаю эти ошибки компилятора.
ошибка C2440: «новая строка»: невозможно преобразовать из «int» в «Class *»
ошибка C2647: '.*': невозможно разыменовать 'void (__thiscall Class::*)(int)' на 'int'