Общие (почти) параметры с самоописанием в C++ в сочетании с графическим интерфейсом?

Я столкнулся со следующей головоломкой: наше программное обеспечение имеет абстрактный базовый класс для объектов алгоритмов. Все эти объекты имеют общий метод execute(), например:

class Algorithm
{
public:
  // [...]
  virtual void execute() = 0;
  // [...]
};

Для каждого алгоритма, который мы хотим реализовать, мы просто наследуем от базового класса и сохраняем все загруженные объекты алгоритма в центральном расположении. Все идет нормально.

Теперь проблема заключается в параметрах алгоритма. Мы хотим иметь возможность описать для каждого алгоритма параметры, которые необходимо установить (внешним классом). С этой целью мы дали каждому алгоритму объект ParameterList, который содержит его параметры.Я должен уточнить, что для нас параметр состоит из какого-то типа (например, int) и метки (например, «Количество итераций»).

Теперь проблема начинается, когда мы хотим подключить ParameterListв какой-то графический интерфейс. Очевидно, что наши алгоритмы не должны иметь «знаний» о графическом API (Qt, GTK и т. д.), который мы используем. Тем не менее, с той же стороны, мы хотим чтобы иметь возможность семантически описывать параметры алгоритма, например, указывая, что для алгоритма требуется имя файла.Как это имя файлабудет отображаться в дальнейшем, зависит от графического интерфейса пользователя.

Есть ли как совместить этот ParameterListс каким-то знанием семантического типа?

Я понимаю, что этот вопрос звучит очень расплывчато. Тем не менее, мне не разрешено публиковать какие-либо нетривиальные примеры кода (по причинам NDA) Итак, сталкивался ли кто-нибудь с подобной проблемой в прошлом?

Подводя итог: мы хотим, чтобы наши объекты описывали параметры, зная точные детали графического интерфейса.

11
задан Gnosophilon 15 May 2012 в 19:27
поделиться