你好我得到未定義引用錯誤在下面的代碼:未定義引用靜態變量C++
class Helloworld{
public:
static int x;
void foo();
};
void Helloworld::foo(){
Helloworld::x = 10;
};
我不想static
foo()
功能。如何在一個類的非static
方法中訪問一個類的變量static
?
你好我得到未定義引用錯誤在下面的代碼:未定義引用靜態變量C++
class Helloworld{
public:
static int x;
void foo();
};
void Helloworld::foo(){
Helloworld::x = 10;
};
我不想static
foo()
功能。如何在一個類的非static
方法中訪問一個類的變量static
?
我不想
static
foo()
功能
好,foo()
是在你的類不靜態的,你做不需要使其static
以訪問static
變量你的班級。
您需要做的僅僅是爲您的靜態成員變量提供定義:
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。 再次感謝。 – 2013-04-29 17:35:02
@Nevermore:不客氣,很高興它有幫助;) – 2013-04-29 17:40:33
@AndyProwl我試過這個,並得到了一個編譯器錯誤,將x設置爲0.它說'類Helloworld'中的'foo'沒有命名一個類型。有什麼建議? – ufmike 2016-07-14 20:06:24
的代碼是正確的,但不完整。 Helloworld
類別的聲明其靜態數據成員x
,但該數據成員沒有定義。 Somehwere在源代碼中,你需要
int Helloworld::x;
,或者,如果0是不是一個合適的初始值,添加一個初始值設定。
這將是很好的接受一個答案。 – Geoff 2016-02-03 18:10:52