Ссылка на нестационарную функцию-член должна быть вызвана

Я использую С++ (не С++ 11). Мне нужно сделать указатель на функцию внутри класса. Я стараюсь сделать следующее:

void MyClass::buttonClickedEvent( int buttonId ) {
    // I need to have an access to all members of MyClass class
}

void MyClass::setEvent() {

    void ( *func ) ( int ); 
    func = buttonClickedEvent; // <-- Reference to non static member function must be called

}

setEvent();

Но есть ошибка: "Ссылка на нестационарную функцию-член должна быть вызвана". Что делать, чтобы сделать указатель на член MyClass?

Ответы

Ответ 1

Проблема заключается в том, что buttonClickedEvent является функцией-членом и вам нужен указатель на элемент, чтобы вызвать его.

Попробуйте следующее:

void (MyClass::*func)(int);
func = &MyClass::buttonClickedEvent;

И затем, когда вы вызываете его, для этого вам нужен объект типа MyClass, например this:

(this->*func)(<argument>);

http://www.codeguru.com/cpp/cpp/article.php/c17401/C-Tutorial-PointertoMember-Function.htm