Создание таблицы функторов
Мне необходимо создать таблицу std::map<std::string, std::unique_ptr<AbstractFunctor> >
функторов, где каждый функтор может принимать различное количество аргументов.
Написав такой код
struct AbstractFunctor
{
virtual operator() () = 0
virtual ~AbstractFunctor() {}
}
struct func1: AbstractFunctor
{
double operator() (const double& val) override;
~func1() {}
}
struct func2: AbstractFunctor
{
int operator() (const double& val1, const double& val2) override;
~func2() {}
}
Я понял, что это не будет работать, тк мы переопределяем как будто бы не ту функцию. Как можно было бы сделать так, чтобы моя идея сработала?
Сначала подумал, что можно создать
virtual double operator() (const double&) =0;
Но быстро отдернул себя от этой мысли, тк в каждом наследнике нужно будет переопределить этот метод Может быть есть способ перегрузить переопределенный метод?