This is driving me nuts! Here's my problem, I'll illustrate by example here for clarity.
In brief, what I want to do is pass the address of a member function of a child class into a function of it's base class.
But the compiler insinuates that this just isn't possible because child::function does not match parameter parent::function.
I have tried all sorts of casts but the compiler stands firm.
So my idea was to define the parameter i the parent class as type void*.
Inside the function, I could then cast the child::function into a parent::function beneath the prying eyes of the compiler, and thus go about my day.
But now it just says "cannot convert 'function' from type 'void *' to type 'void (Parent::*)()'..."
example:
Code:class Parent { public: void (Parent:: *invoke)(void); void AttachA(void (Parent:: *function)(void)) { invoke = function; } void AttachB(void * function) { invoke = (void (Parent:: *)(void)) function; } }; class Child : public Parent { public: void ThisFunction() { } void Attach() { AttachA(&Child::ThisFunction); //...error: no matching call to AttachA(void (Child::(*)())...(canidates are "Parent::")... AttachA(&Parent::ThisFunction); //...error: ThisFunction not a member of parent... AttachB((void*)ThisFunction); //..error: cannot resolve based on conversion to type void*... } };
Anyone know a good way around that?



LinkBack URL
About LinkBacks




)