XML データ バインディングに gSOAP を使用しています。
最近、2 つのファイルから共通部分を別の 3 番目のファイルに抽出し、それを最初の 2 つのファイルにインポートすることで、XSD ファイルをリファクタリングしました。これは、リファクタリングされた深く複雑な要素でした。
実際のコードでは、その要素を記述する gSOAP 生成型のオブジェクトを取得し、いくつかの内部オブジェクトを構築する単一の関数が必要です。
しかし、このためには、生成されたクラスを安定させ、最終的な両方の XSD ファイルで同じにする必要があります (関数が単一の型を取ることができるようにするため)。しかし、私はそれを達成する方法がわかりません。
解決策はありますか?
生成された型が異なっていても (特に C++ 名前空間が異なるため)、同じメンバーを持っているため、テンプレートはうまく機能するはずであるという事実に基づいて、関数をテンプレートにすることを検討しました。しかし、それには私がしたくない実装を公開する必要があります (要素の複雑さに応じて複雑になります)。
私が試した別のアプローチは、インポートされた XSD に対して生成されたコードが同じと見なされるように、gSOAP に両方のプライマリ XSD ファイルのコードを同じ C++ 名前空間に生成させることでした。しかし、定義が繰り返されるため、これはリンクの問題につながります。