Я передаю указатель на функцию-член в функцию шаблона. Что-то вроде этого,Вызов указателя на функцию-член, переданную в функцию
Foo bar; /* bar.baz(...) is a function */
auto pnt = bar.baz;
passMmbFunc<...,decltype(pnt)>(...,pnt);
Соответствующие части passMmbFunc
выглядят так,
template <..., typename D>
void map(..., D func) {
...
auto ret = func(someVal);
...
}
Я предположил, что синтаксис вызова указатель на функцию-член такой же, как обычный указатель на функцию, но это не. Я получаю следующее сообщение об ошибке,
error: must use '.*' or '->*' to call pointer-to-member function in 'func (...)', e.g. '(... ->* func) (...)'
passMmbFunc
Изнутри, как бы я называю ПНТ? Я знаю, что указатель на функцию-член можно вызывать, если у вас есть объект соответствующего класса. Но поскольку я передаю его как параметр, это не так. Итак, есть ли способ вызвать указатель на функцию-член, если у вас есть только указатель и нет объекта?
Вы сделали неправильное предположение. – dtech
Синтаксис отключает вас, потому что (как предполагал предыдущий комментарий) вы слишком много думали. Вы не можете вызвать указатель на нестационарную функцию-член без объекта, и синтаксис гарантирует это. – PaulMcKenzie
Что бы вызвать функцию-член как 'size()' или 'to_string()' или любое среднее значение без экземпляра соответствующего класса? – Mat