我想传递我的函数repaint()的函数指针,它在3个版本中重载。我想通过一个没有任何参数的那个:
void repaint()
我试过了:
myObject = new Object(&myclass::repaint);
但是编译器说"我不知道选择哪个版本"。行。
然后我试了
myObject = new Object(static_cast<void(*)(void)>(&repaint);
然后我得到了(抱歉翻译不好):
如何正确传递?
答案 0 :(得分:3)
成员函数指针和非成员函数指针不是一回事。代码中成员函数指针的类型不正确,将其更改为
myObject = new Object(static_cast<void(myclass::*)()>(&myclass::repaint);
~~~~~~~~~
BTW:参数列表中的void
是多余的。
答案 1 :(得分:2)
&myclass::repaint
获取指向成员的指针,就像在第一个代码中一样。void (myclass::*)()
所有指向成员的指针类型都指定了类。(参数列表(void)
是一个C-ism。除非你想看起来很旧,否则不要把它留空。)