0

小さな任意精度の算術ライブラリを作成していますが、問題が発生しました。

私のexception.hexception.cppstd::exceptionには、から派生した例外クラスがあります。Exception.hはvector.hに含まれ、vector.hmy_long.hに含まれます。

したがって、問題は次のとおりです。main.cppとmy_long.cppにmy_long.hを含める、例外クラスのすべての関数で再定義リンカーエラーが発生LNK2005します。これは、このクラスを含めているため、非常に論理的です。 2つの異なる翻訳単位で、それらをリンクしようとします。

考えられる回避策はありますか、または私は何を間違っていますか?

4

1 に答える 1

0

選択肢は 2 つあります。my_long.h 内のすべての関数をインラインとしてマークして、複数の同一の定義を許可するか、関数定義を my_long.cpp に移動して my_long.h でそれらの宣言を進めることができます。

通常、ヘッダー ファイルを読み取り可能な状態に保つには、非常に小さな関数を除いて 2 番目を実行する必要があります。

于 2012-08-01T14:27:33.793 に答える