私はC++が初めてです。C++ の複数定義エラーについて疑問があります。
プログラムに 3 つのファイルがあるとします。1 つのヘッダー ファイルと 2 つの .cpp ファイル。両方の .cpp ファイルにヘッダー ファイルを含めました。
- ヘッダー ファイルでクラスを宣言し、まったく同じ方法で各 .cpp ファイルでクラスを定義しました。このタイプの実装では、複数定義エラーが発生しますか? もしそうなら、クラス定義の 2 つのコピーがあり、コンパイラは 2 つの .o ファイルのリンケージ中にどちらを使用するかを認識していないためですか?
ヘッダー ファイルで使用し、そのうちの 1 つのファイルでのみクラスを定義することで、この問題を解決できextern
ますか?この方法を使用して問題を解決できる場合、.cpp (クラス定義を含む) を他の .cpp ファイルに含める必要がありますか? (クラス定義なし)?
ヘッダー ファイルでクラスを宣言および定義しました。この場合は上記(1で述べた)と同じですか?
ヘッダー ファイルでクラスを宣言し、各 .cpp ファイルでクラスを定義しましたが、定義 (関数本体) が異なります。このタイプの実装では、複数定義エラーが発生しますか? もしそうなら、関数本体が .cpp ファイルで異なるこの問題をどのように解決できますか?