#include<list>
#include<iostream>
using namespace std;
class cBase{
public:
virtual ~cBase(){}//робимо клас поліорфним
};
class cChild : public cBase{
public:
//тут що завгодно
virtual void metod1(){};
};
template<class T>
class cListItem
{
public:
T data;//під дата розумію якогось далекого cChild з купою методів та полів
cListItem<T> * prev;
cListItem<T> * next;
cListItem(){
//прошу, робіть це відразу!
prev = 0;
next = 0;
}
};
template<class T>
class cTList : public list<T>{
public:
//push, pop, set переопреділяємо як хочемо
};
template <class T>
class cItemList : public cTList < cListItem<T> >
{
public:
};
template<class T1, class T2>
class cTreeItem : public cListItem<T2>{
public:
T1 tkey;//сюди ложіть ключа
//T2 data;//сюди ложіть cItemList T2 = cItemList <якийсь інстанс>
};
template<class T1, class T2>
class cItemTree : public list<cTreeItem<T1, T2> >
{
public:
};
int main(){
return 0;
}