Есть родительский класс функция
class function
{
public:
function (const string &Name) name(Name) {}
virtual double get_out (const double x) const =0;
string name;
};
И есть куча классов которые наследуют этот класс переопределяя метод get_out
например:
class sinus : public function
{
sinus () : function("sinus")
double get_out (const double x) { return sin(x);}
}
Далее мне нужно в зависимости от названия функции создать функцию
У каждой функции имя совпадает с название класса.
function * get_function (const string name)
{
if (name == "sinus")
retrun new sinus();
}
Есть ли способ как то избежать огромного стека ifфов ? Чтобы не создавать под каждую функцию свой if, а преобразовать строку "sinus" в тип sinus?