こんにちは、読んでいただきありがとうございます。私はクラスの.h ファイルまたは実装ファイル.CPPにクラスコンストラクタの本体を定義することができヘッダファイルVS実装(.cpp)ファイルにコンストラクタを定義する
これはちょうど、とにかくここで行く「個人の好み」のカテゴリに該当する可能性があります ...。これらの2つのスタイルは、コンパイラが特定のプロジェクト(私のプロジェクトはdllを意味します)内で関係する限り、おそらく同じです。 同じことは実際にどのメンバー関数にも当てはまります。ヘッダーファイルで定義するか、そこで宣言してからcppファイルで定義することができます。
しかし...
は、私は別のプロジェクトで、このようなクラスのヘッダーファイル(複数可)を含める必要がある場合には(最終的には、ヘッダファイルを使用するコードが異なるDLLで終わることを意味する)ことがわかりましたヘッダーファイルに実際の実装があると、コンパイル時に頭痛が発生します(リンクしていない...私はその点に到達していません)。 なぜですか?まあ、私はあまり詳しくは触れませんが、コンパイラは他のヘッダファイルなどで定義されている可能性があるすべての関数を解決しようとしています...貧しい開発者がさまざまなヘッダファイルを取得するよう強制します...
LONGSTORY short:
ヘッダーファイルを実装から解放し、 '宣言'のためだけに使用することは常に最善の方法ではありませんか?それは、余分な迷惑メールをたくさん持ち歩かずに、複数のプロジェクトにそれらを含めるほうが簡単になります。
これについてご意見はありますか? ありがとう!
実装をヘッダに入れることができる場合もあります。もし、2つの異なるファイルが両方ともお互いを必要とするならば、それはヘッダーで行うことはできません、それはcppで行われなければなりません。 –
「できません」を意味します。「できません」。そうでなければ、良い点。 – Thomas
「簡単な」例外は、簡単なコンストラクタにも簡単に適用できます。違った扱いをする理由もないし、インライン化させない理由もない。 –