Christoph Christoph - 1 year ago 74
C++ Question

Pass a function pointer of an overloaded member function?

I want to pass a function pointer of my function repaint() which is overloaded in 3 versions. I want to pass the one without any arguments:

void repaint()

I tried:

myObject = new Object(&myclass::repaint);

But the compiler says "I don't know which Version to choose". OK.

Then I tried

myObject = new Object(static_cast<void(*)(void)>(&repaint);

Then I got (sorry for the bad translation):

  • "invalid operation on an expression of a bound member function"

  • "myObject::myObject no overloaded function accepts 3 arguments"

How to pass it correctly?

Answer Source

Member function pointer and non-member function pointer are not the same thing. The type for member function pointer in your code is not correct, change it to

myObject = new Object(static_cast<void(myclass::*)()>(&myclass::repaint);

BTW: The void in parameter list is redundant.