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