У меня есть класс, который использует функторы в качестве единиц работы. Он принимает ссылку на функтор в своем методе Run (). Чтобы этот класс мог работать с любым функтором, все эти функторы должны быть производными от моего базового класса функторов, который выглядит следующим образом:
class baseFunctor{
public:
virtual void operator()()=0;
virtual baseFunctor Clone()=0;
};
Это работает, однако, очевидно, что оно ограничивает использование этих функторов операторным методом, который возвращает void и не принимает никаких параметров. Мне нужно иметь в своем классе функтор, который может принимать параметры любого типа и возвращать что угодно. Это очевидно выполнимо, но я не могу найти способ сделать это. Я рассмотрел возможность использования шаблонов множественного наследования, но меня постоянно смущает тот факт, что класс, который должен запускать этот функтор, должен иметь возможность принимать любой тип, поэтому будет принимать тип базового класса и поэтому не будет знать фактический тип функтора.
Буду признателен за любые предложения о том, на какой путь смотреть.