#include class Interface { public: virtual void foo()=0; virtual int bar()=0; virtual char mumble()=0; }; class Implementation : public Interface { public: void foo(){ std::cerr<<"Implementation::foo()\n"; } int bar(){ return 42;} char mumble(){return 'a';} }; class Client { public: static void wimble() { Interface* i ; i= new Implementation(); i->foo(); } }; main(){ Client::wimble(); }