无法增加静态变量

时间:2013-04-14 11:10:14

标签: c++

你能帮我理解为什么我不能增加静态变量吗? 我面对这个:*错误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++;
}

3 个答案:

答案 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;