#include "stdafx.h"class Inter...{public: virtual void* GetInter(int i) =0;};class In0...{public: virtual void P0() =0;};class In1...{public: virtual void P1() =0;};class Imp : public Inter, public In0, public In1...{public: /**//** * losted type **/ virtual void* GetInter(int i) ...{ switch( i ) ...{ case 0 : ...{ /**//** * cast to In0* **/ return (In0*)this; } case 1 : ...{ return (In1*)this; } default: break; } return NULL; } virtual void P0() ...{ std::cout<<"p0...."<<std::endl; } virtual void P1() ...{ std::cout<<"p1...."<<std::endl; }};int _tmain(int argc, _TCHAR* argv[])...{ Inter* b = new Imp(); /**//** * virtual ptr inter, in0, in1 **/ In0* in0 = (In0*)b->GetInter(0); if ( in0 ) ...{ in0->P0(); } return 0;}