私のプロジェクトでは、絶えず変化するサードパーティのライブラリを使用しています。このライブラリのラッパークラス(ブリッジパターン+ 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
};
または、その構造体ヘッダーをソースに直接含める必要がありますか?
ラッパーの欠点は次のとおりです。コピー-貼り付け、構造体間で変換するための追加コード。直接の欠点は次のとおりです。単純なイディオムを破る。
この問題に対する他の解決策はありますか?
また、サードパーティのライブラリは絶えず変化していることを強調したいので、ライブラリのすべての新しいバージョンをサポートするためにソースを採用する必要があります。