こんにちは、次のコードで未定義の参照エラーが発生しています:
_class Helloworld{
public:
static int x;
void foo();
};
void Helloworld::foo(){
Helloworld::x = 10;
};
_
static
foo()
関数は必要ありません。クラスのstatic
メソッド以外のクラスのstatic
変数にアクセスするにはどうすればよいですか?
static
foo()
関数が必要ない
さて、foo()
はnotクラス内で静的であり、あなたはnotstatic
にアクセスしてstatic
クラスの変数。
行う必要があるのは、静的メンバー変数にdefinitionを指定するだけです。
class Helloworld {
public:
static int x;
void foo();
};
int Helloworld::x = 0; // Or whatever is the most appropriate value
// for initializing x. Notice, that the
// initializer is not required: if absent,
// x will be zero-initialized.
void Helloworld::foo() {
Helloworld::x = 10;
};
コードは正しいですが、不完全です。クラスHelloworld
には、その静的データメンバーx
の-宣言がありますが、そのデータメンバーの定義はありません。あなたが必要とするソースコードの中に
int Helloworld::x;
または、0が適切な初期値でない場合は、初期化子を追加します。