При возврате указателя функции-члена в класс внутри одной из этих функций-членов класса мне все равно нужно указать класс. Я не могу просто взять адрес. Например, этот код отлично работает:
class Foo {
public:
void func(int param) { cout << param << endl; }
void (Foo::*getPointer())(int) { return &Foo::func; }
};
Но если в getPointer
я пытаюсь просто сделать: return &func
Я получаю эту ошибку:
prog.cpp: В функции-члена '
void (Foo::* Foo::getPointer())(int)
':
prog.cpp: 8: 43: error: ISO С++ запрещает принимать адрес неквалифицированной или нестационарной функции-члена в виде скобки, чтобы сформировать указатель на функцию-член. Скажите '&Foo::func
' [-fpermissive]
void (Foo::*getPointer())(int) { return &func; }
Почему я должен указывать класс, когда тот контекст, в котором я находится?