2013-04-14 67 views
0

您能否幫助我理解爲什麼我無法增加靜態變量? 我面對這樣的:*錯誤LNK2001:無法解析的外部符號 「私人:靜態unsigned int類型計數器:: m_curCounters」 *無法增加靜態變量

counter.cpp

#include "counter.h" 

static unsigned int m_curCounters = 0; 

Counter::Counter(const char* p){ 
    ... 
    m_curCounters++; 
} 


Counter::Counter(){ 
    ... 
    m_curCounters++; 
} 
+0

try :: m_curCounters ++; –

回答

3

我覺得發生了什麼在這裏,你有counter.h宣佈m_curCounters和您創建的CPP一個新的本地靜態。 但類靜態需要通過在CPP定義它們爲unsigned int Counter::m_curCounters = 0;

我們是鏈接可見當您嘗試使用本地靜態編譯器給出的優先類的靜態,連接子找不到以後

3

我(m_curCounters @計數器@@ 0IA?)假設你在計數器中聲明瞭m_curCounters
然後,你需要將它定義爲

unsigned int Counter::m_curCounters = 0; 
0

既然你給了我們一半的代碼,它的時候了一些心理調試!這是我認爲你必須在你的頭文件:

class Counter 
{ 
    static unsigned int m_curCounters; 
}; 

因此,在您的.cpp文件,你忘了你的類的範圍內定義靜態變量。您需要:

unsigned int Counter::m_curCounters = 0; 
+0

它不會用靜態編譯定義。 – alexrider

+0

@alexrider:你說得對,我會解決這個問題的。謝謝。 –