これは非常に些細なことであるに違いありませんが、私はそれを見つけることができません:
struct Test {
static int n;
void Save(int val) {
Test::n = val;
}
};
int main() {
Test t;
t.Save(2);
return 0;
}
Test::n
4行目に未定義の参照があるのはなぜですか?
これは非常に些細なことであるに違いありませんが、私はそれを見つけることができません:
struct Test {
static int n;
void Save(int val) {
Test::n = val;
}
};
int main() {
Test t;
t.Save(2);
return 0;
}
Test::n
4行目に未定義の参照があるのはなぜですか?
静的を定義する必要があります:
struct Test {
static int n;
void Save(int val) {
Test::n = val;
}
};
int Test::n = 0;
定義はヘッダーではなく実装ファイルに表示される必要があることに注意してください。そうしないと、複数定義エラーが発生します。
静的データメンバーを定義する必要があります(必ずしも初期化する必要はありません)。自動的に0に初期化されます。リンカーエラーが発生していると思います。これは、定義が欠落しているため、データメンバーが割り当てられていないためです。これはその価値とは何の関係もありません。