#include <iostream> using namespace std; class base { public: typedef void (*interruptFunction) (void);//prototype virtual void Attach(interruptFunction foo)=0; }; class derived: public base { public: explicit derived(interruptFunction cb=nullptr); interruptFunction m_callback; void Attach(interruptFunction foo) override { m_callback=foo; } }; void foo(void) { cout<<endl<<"foo"; } derived::derived(interruptFunction cb):base(),m_callback(cb){} int main() { derived d(&foo); d.m_callback(); //d.m_callback(); cout << "\nHello, World!"; return 0; }