Рекурсия в шаблонах.
От: adontz Грузия http://adontz.wordpress.com/
Дата: 22.09.04 10:06
Оценка:
Пишу дерево распределение памяти в котором должно регулироваться policy классом.

Сей класс имеет такой вид (все исходники сильно упрощены)
template <typename T>
class memory_manager
 {
  public:
   static T * alloc();
   static void free(T * pt);
 }

С другой стороны класс узла дерева имеет такой вид
template <typename M>
class tree_node
 {
  protected:
   tree_node * left;
   tree_node * right;
   tree_node * parent;
  public:
   tree_node(
    left_init = NULL,
    right_init = NULL,
    parent_init = NULL) :
     left(left_init),
     right(right_init),
     parent(parent_init),
    {
    }
   ~tree_node()
    {
     M::free(left);
     M::free(right);
    }
 }

И всё бы хоршо, но! Для того, чтобы инстациировать класс tree_node мне нужен полностью определённый memory_manager, а ему в свою очередь нужен полностью определённый tree_node. Получается что-то такое
tree_node<memory_manager<tree_node<memory_manager<tree_node<memory_manager<tree_node<memory_manager<.. :wow: ..> > > > > >


Как бы это обойти? Что-то не варит у меня голова
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.