Re[3]: visitor
От: Sm0ke Россия ksi
Дата: 04.10.06 09:53
Оценка:
я использую доработанную версию с виртуальностью.

типа такого:
class part_visitor :
  public _visitor<part_visitor>
{};

class spell_checker :
  public part_visitor::visitor<spell_checker>
{
public:
  wchar_t * h_mem;
  // другие св-ва
};

class part :
  virtual public part_visitor::_is_visitable
{
protected:
  virtual ~part() = 0;
};

class some_part1 :
  public part_visitor::is_visitable<some_part1>
{};

template <>
template <>
template <>
void spell_checker::action<some_part1>::do_action(T & target)
{
  // конкретная реализация действия
}

void test()
{
  part_visitor * hv= new spell_checker(/*параметры*/);
  part * hp= new some_part1;
  hp->visit(hv);
  // удаление hv, hp не забыть!
}


Имена, начинающиеся со знака '_' (с подчёркивания)
это имена интерфейсов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.