#include "stdafx.h" #include <iostream> class CAdaptee1 { public: void SpecificPrint() { std::cout << "specific print" << std::endl; } }; class CAdaptee2 { public: void SpecificPrint2() { std::cout << "specific print 2" << std::endl; } }; class CAdapter { public: virtual void Print() = 0; }; class CAdapter1 : public CAdapter { public: virtual void Print() { m_Adaptee.SpecificPrint(); } private: CAdaptee1 m_Adaptee; }; class CAdapter2 : public CAdapter { public: virtual void Print() { m_Adaptee.SpecificPrint2(); } private: CAdaptee2 m_Adaptee; }; int _tmain(int argc, TCHAR argv[]) { CAdapter1 Adapter1; CAdapter2 Adapter2; Adapter1.Print(); Adapter2.Print(); return 0; }