adapter.h
#pragma once
#include <QDebug>
class CTarget
{
public:
virtual void request(){qDebug() << "normal";}
};
class CAdaptee
{
public:
CAdaptee(){};
void specificalRequest(){qDebug() << "treble";}
};
class CAdapter : public CTarget
{
public:
CAdapter(CAdaptee *ptr);
~CAdapter();
void request();
private:
CAdaptee *m_adaptee;
};
adapter.cpp
#include "adapter.h"
CAdapter::CAdapter(CAdaptee *ptr):m_adaptee(ptr)
{
}
CAdapter::~CAdapter()
{
delete m_adaptee;
}
void CAdapter::request()
{
CTarget::request();
m_adaptee->specificalRequest();
}
main.cpp
#include <QApplication>
#include "adapter.h"
int main(int argc,char **argv)
{
QApplication app(argc,argv);
CTarget *target = new CAdapter(new CAdaptee);
target->request();
delete target;
return app.exec();
}