ブーストなどのサードパーティ製ライブラリをいくつか使用しています。プロジェクトには 1 つのクラスがあり、「MyClass」と呼びます。
「MyClass」のすべてのパブリック関数は標準型 (int、char、string) のみを使用しますが、プライベート関数はブーストのスマート ポインターと他のライブラリの他のアルゴリズムを使用します。
したがって、クラス (およびその関数) の宣言を H ファイルに書き込む前に、いくつかのインクルード ファイルを記述します。
プロジェクトをコンパイルするには、追加のインクルード ライブラリをプロジェクト プロパティに追加します。そして、すべてがうまくいきます。
問題は、USERPROJECT という別のプロジェクト (クラスは extern) からこのクラスを使用したい場合、USERPROJECT プロジェクトに MyClass.h ファイルを含める必要があることです。MyClass.h にはブーストなどが含まれているため、何もコンパイルされません。 USERPROJECT で構成されていないもの (ここでは追加のインクルード ライブラリを構成しませんでした。彼はそれらを知る必要がないため、そうしたくありません。それらは MyClass クラスのプライベート関数にあります)。
解決策は何ですか?
- MyClass をインターフェイス用と実装用の 2 つのクラスに分割する必要がありますか?
- H と MyClass からすべてのインクルードを削除し、前方宣言を使用する必要がありますか? (試してみましたが、コンパイルに失敗しました)
- より良い解決策はありますか
前もって感謝します