在我的项目中,我使用了一个不断变化的 3rd 方库。我有这个库的包装类(桥模式 + Pimpl 模式)。因此,除了包装器实现之外,我的任何来源都没有看到该库。这个库有一个 Options 结构,例如
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 成语。
这个问题可能还有其他解决方案吗?
另外我想强调的是,第 3 方库是不断变化的,所以我必须采用我的资源来支持库的每个新版本。