В этом случае вы можете вызывать только свободную функцию или функцию статического класса.
signal
Сигнатура
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
Это означает, что она принимает только указатель на свободную функциюили статическая функция.
Обратите внимание, что у вас всегда должен быть объект для вызова member функции, скажем, если у вас есть
struct S
{
void method();
}
S obj;
вы можете звонить только obj.method()
, но не S::method()
или method()
, а указатель на S::method
имеет тип void (S::*)()
.
Но если ваш S::method()
был объявлен статическим, вы можете вызвать его с помощьюS::method()
.
Вот почему указатели на свободные функции несовместимы с указателями на функции-члены.