c++ - How to fill a function pointer member with class instance member function pointer? -


having c api need create c++ object extends so:

struct oldcinterface {    void (*dostuff)(); };  struct newcxxbaseclass : protected oldcinterface {    virtual void dostuff();     virtual ~newcxxbaseclass(); }; 

how put instance pointer cxx dostuff c interface in constructor if possible having pointing overload if have base child?

void (*dostuff)() if function pointer, while &newcxxbaseclass::dostuff of type void (newcxxbaseclass::*)(), is, pointer member function. not compatible. usually, not of same size (sizeof(void (*)()) != sizeof(void (newcxxbaseclass::*)())). saying so, following correct

struct oldcinterface {    void (newcxxbaseclass::*dostuff)(); }; 

but since original intention work old c code. not work. best best make static member function calls virtual member function of object. illustration:

struct proxy {   static newcxxbaseclass* s_p_;   static void dostuff() {     s_p_->dostuff();   } }; 

&proxy::dostuff of type void(*)() , can used function pointer expected. then, can following:

oldcinterface c_interface = {&proxy::dostuff};


Comments

Popular posts from this blog

asp.net mvc - SSO between MVCForum and Umbraco7 -

Python Tkinter keyboard using bind -

ubuntu - Selenium Node Not Connecting to Hub, Not Opening Port -