В моем проекте я использую стороннюю библиотеку, которая постоянно меняется.У меня есть класс-обертка (шаблон Bridge + шаблон Pimpl) для этой библиотеки.Так что ни один из моих источников, кроме реализации оболочки, не видит эту библиотеку.Эта библиотека имеет структуру параметров, например,
struct Options {
double distance;
double weight;
int num_rabbits;
// etc
};
Я хочу, чтобы эта структура была доступна в модуле GUI, чтобы построить диалог, позволяющий установить эти параметры.Нужно ли создавать для этого структуру оболочки?Например,
struct MP_ThatLibOptions {
// exact member copy
double distance;
double weight;
int num_rabbits;
// etc
};
Или я должен напрямую включить этот заголовок структуры в мои источники?
Недостатками оболочки являются: копирование-вставка, дополнительный код для преобразования между структурами.Недостатки прямого включения: нарушение идиомы pimpl.
Может быть, есть другие способы решения этой проблемы?
Также хочу подчеркнуть, что сторонняя библиотека постоянно меняется, поэтомуЯ должен принять мои источники для поддержки каждой новой версии библиотеки.