к сожалению, прототип Call должен быть
одинаков во всех классах. Поэтому может так:
Код:
class C1;
class C2;
class FunctorA : public Functor {
public:
virtual void Call( Input & input) { m_c1.Do(input); }
C1 & m_c1;
};
class FunctorB : public Functor {
public:
virtual void Call(Input & input) { m_c2.Do(input); }
C2 & m_c2;
};