我使用的是C ++(不是C ++ 11)。我需要在类中创建一个指向函数的指针。我尝试做以下事情:
void MyClass::buttonClickedEvent( int buttonId ) {
// I need to have an access to all members of MyClass's class
}
void MyClass::setEvent() {
void ( *func ) ( int );
func = buttonClickedEvent; // <-- Reference to non static member function must be called
}
setEvent();
但是有一个错误:&#34;必须调用对非静态成员函数的引用&#34;。如何制作指向MyClass成员的指针?
答案 0 :(得分:26)
问题是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
答案 1 :(得分:8)
您可能需要查看https://isocpp.org/wiki/faq/pointers-to-members#fnptr-vs-memfnptr-types,尤其是 [33.1]“指向成员函数的指针”的类型是否与“指向函数的指针”不同?