2013-06-27 91 views
0

在VC++ CLR項目我有一個類臨時, 我想設置靜態變量temp1中,以5 我得到一個編譯錯誤:C++如何給類中的靜態變量賦值?

Error 32 error LNK2020: unresolved token (0A0005FB) "public: static int temp::temp1" ([email protected]@@2HA) C:\Users\user100\Documents\Visual Studio 2012\NewProject 32 bit\create min bars from data2\create min bars from data\create min bars from data5.obj

Error 33 error LNK2001: unresolved external symbol "public: static int temp::temp1" ([email protected]@@2HA) C:\Users\user100\Documents\Visual Studio 2012\NewProject 32 bit\create min bars from data2\create min bars from data\create min bars from data5.obj

我怎樣才能解決這個問題?

class temp 
    { 
     public: 
     static int temp1; 
    }; 

int main(array<System::String ^> ^args) 
{ 

temp::temp1=5; 
} 
+5

'int main(array ^args)'對我來說看起來不像C++。 – Marius

+3

它是託管的C++。 –

回答

3

編輯

定義你的靜態成員變量

class temp 
{ 
    public: 
     static int temp1; 
}; 

int temp::temp1 = 0; 

// Fixed main() ;) 
int main(int argc, char** argv) 
{ 

     temp::temp1=5; 
     return 0; 
} 
+0

很好的答案。謝謝 –

+1

「初始化」不是正確的詞。我認爲「定義」會更好。 *聲明*(在'class'內部)告訴編譯器某處存在某種東西(因此它可以被編譯)。 *定義*(使用範圍解析運算符'''')告訴編譯器它存在的位置(所以它可以被鏈接)。 –

+0

同意 - 更新! – Huy

5

當定義一個類中的一個靜態變量,無記憶實際上是創建。你需要一個單獨的變量標註來爲它實際製作RAM。這就是編譯器告訴你的。

//Outside your class declaration: 
int temp::temp1;