Лучший способ для программы на C ++ следовать заданному пользователем сценарию?

У меня есть программа моделирования, которая многократно повторяет набор функций в определенном порядке, а затем выводит результат некоторых вычислений, основанных на этих функциях. Каждая функция каким-либо образом изменяет объект 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 при каждом запуске моделирования, чтобы определить, какие функции вызывать.

У кого-нибудь есть предложения?

5
задан JBentley 2 March 2012 в 11:04
поделиться