// Класс автомобиль
class Car {
string m_Name;
string m_Firma;
}
typedef Car* PtrCar;
// Базовый класс
class Wrap {
public:
virtual void Add(string key, PtrCar val) = 0;
virtual void Del(string key) = 0;
virtual PtrCar Find(string key) = 0;
virtual void DelAll() = 0;
}
// Класс по конкретному дереву
class WrapBTree : public Wrap {
protected:
// Внутренняя реализация
std::map m_Tree;
public:
virtual void Add(string key, PtrCar val) { m_Tree[key] = val; };
virtual void Del(string key);
virtual PtrCar Find(string key)
virtual void DelAll();
}
Wrap *ptrName = new WrapBTree;
Wrap *ptrFirma = new WrapBTree;
PtrCar c = new Car;
c->m_Name = "Копейка"
c->m_Firma = "ВАЗ"
ptrName->Add(c->m_Name, c);
ptrFirma->Add(c->m_Firma, c);