Здравствуйте, 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