2014-06-08 67 views
-1
class Test 
{ 
private: 
    static int i; 
public: 
    static void foo() 
    { 
     i = 10; 
    } 
    static int geti(){ return i; } 
}; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    Test::foo(); 
    std::cout << Test::geti(); 
    return 0; 
} 

這是一個簡單的測試,我認爲我錯了我的程序中的靜態使用。因爲我總是得到「未解決的外部符號我」。爲什麼是這樣 ?無法訪問靜態成員 - >無法解析的外部符號我

回答

0

你必須定義static類定義之外成員變量:

int Test::i=10; //or any value or just the definition will do. 

在課堂上,你只是聲明,如果不定義。沒有定義,鏈接器將無法找到它,並會顯示未解析的外部符號

static因爲One Definition Rule和C++的編譯模型,類中的成員變量需要特殊處理。