2013-04-14 38 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:你说得对,我会解决这个问题的。谢谢。 –