皆さん、こんにちは。
私は基本的なことに引っかかっているようですが、どこにも解決策が見つかりません。とにかく、先に進んで説明します。
3 つのファイルで構成されるプログラムがあります。main.ccp、add.h、add.cpp。
add.h でクラス 'SA' を宣言し、すべての関数を add.cpp で定義しています。
追加.h
class SA {
...
public
int x;
} Obj1, Obj2;
main.ccp
#include "additional.h"
int main() {
Obj1.x = 5;
...
}
これにより、コンパイル時にリンク エラーが発生します。エラー LNK2005: "class SA Obj1" (?Obj1@@3VSA@@A) already defined in main.obj
オブジェクトの唯一の定義は add.h で発生し、他の場所では発生しません。ヘッダーではなくメインでオブジェクトを宣言すると、プログラムは問題なくコンパイルされます。
main.ccp
#include "additional.h"
int main() {
SA Obj1;
Obj1.x = 5;
...
}
問題は、主に add.cpp 内でオブジェクトを使用したいが、main.cpp を介していくつかの公開値を初期化する必要があることです。知恵の言葉はありますか?