Re: Шаблонный Visitor
От: Кодт Россия  
Дата: 03.11.09 01:44
Оценка:
Здравствуйте, AcidTheProgrammer, Вы писали:

ATP>Хотелось бы через метод метод Visit класса BaseA вызывать шаблонный метод Callback класса C.


Ну раз метод Visit принимает полиморфный объект — делай его шаблоном.
class BaseA
{
  template<class TC> // требование к TC - у него должен быть метод Callback(_)
  void Visit(TC& c)
  {
    .....
    c.Callback(*this);
    .....
  }
};

class C
{
  template<class TA>
  void Callback(TA& a)
  {
    .....
    a.Visit(*this); // пущай они в пинг-понг сыграют :)
    .....
  }
};


А если нужен полиморфизм времени исполнения — тут уж, как ни крути, без косвенных вызовов никуда. Будь то виртуальные методы, указатели на функции или замыкания типа boost::function
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.