你能帮我理解为什么我不能增加静态变量吗? 我面对这个:*错误LNK2001:未解析的外部符号“private:static unsigned int Counter :: m_curCounters”(?m_curCounters @ Counter @@ 0IA)*
counter.cpp
#include "counter.h"
static unsigned int m_curCounters = 0;
Counter::Counter(const char* p){
...
m_curCounters++;
}
Counter::Counter(){
...
m_curCounters++;
}
答案 0 :(得分:4)
我想你在柜台上宣布了m_curCounters
然后你需要将其定义为
unsigned int Counter::m_curCounters = 0;
答案 1 :(得分:4)
我认为你在m_curCounters
声明了counter.h
并在cpp中创建了一个新的本地静态。
但是,通过在cpp中将它们定义为unsigned int Counter::m_curCounters = 0;
现在,当您尝试使用本地静态时,编译器优先使用链接器无法在以后找到的类static
答案 2 :(得分:1)
既然你给了我们一半的代码,那就是进行一些心灵调试的时候了!以下是我认为您在头文件中的内容:
class Counter
{
static unsigned int m_curCounters;
};
因此,在.cpp文件中,您忘记在类的范围内定义静态变量。你需要:
unsigned int Counter::m_curCounters = 0;