#include "stdafx.h"
// 需要的接口
struct IAdd
{
virtual int Add(int x, int y) = 0;
};
// 适配器
// 假设正确实现了接口的方法,但未从接口派生
template<typename T>
struct AddAdapter : public IAdd
{
AddAdapter(T& addObj)
: m_addObj(addObj)
{
}
virtual int Add(int x, int y)
{
return m_addObj.Add(x, y);
}
private:
T& m_addObj;
};
// 功能对象
struct AddImpl
{
int Add(int x, int y)
{
return x+y;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
AddImpl add;
AddAdapter<AddImpl> addx(add);
int x = addx.Add(100,200);
printf("x = %d\n", x);
return 0;
}