У меня есть программа моделирования, которая многократно повторяет набор функций в определенном порядке, а затем выводит результат некоторых вычислений, основанных на этих функциях. Каждая функция каким-либо образом изменяет объект Simulator и принимает переменное количество аргументов разных типов. Например:
class Simulator
{
Simulator();
void A(int x, double y, string z);
void B(int x, int y);
void C(double x);
};
Я хочу, чтобы пользователь мог указать порядок, в котором эти функции будут вызываться, а также аргументы, и мне нужно иметь возможность хранить эту информацию в каком-то скрипте для программы, которой будет следовать . Например, сценарий может быть переведен на следующие действия для программы:
Simulator mySim;
mySim.A(5, 6.0, "a string");
mySim.B(1, 1);
mySim.A(3, 4.0, "another string");
mySim.C(10.0);
Есть ли эффективный способ сделать это? Моя первоначальная мысль - иметь связанный список объектов, каждый из которых хранит имя функции, а также аргументы. Затем программа будет просматривать список, по очереди вызывая каждую функцию. Однако это создает несколько проблем:
(a) Как сохранить аргументы в списке, который будет отличаться для каждой функции (как по количеству, так и по типу).
(b) Это кажется довольно неэффективным, поскольку моя программа должна будет выполнять серию операторов if при каждом запуске моделирования, чтобы определить, какие функции вызывать.
У кого-нибудь есть предложения?