4

你能帮我理解为什么我不能增加静态变量吗?我面对这个: *error LNK2001: unresolved external symbol "private: static unsigned int Counter::m_curCounters" (?m_curCounters@Counter@@0IA)*

计数器.cpp

#include "counter.h"

static unsigned int m_curCounters = 0;

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


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

3 回答 3

5

我认为您已在此处m_curCounters声明counter.h并在 cpp 中创建了一个新的本地静态文件。但是通过在 cpp 中将类静态定义为unsigned int Counter::m_curCounters = 0;

现在,当您尝试使用本地静态时,编译器会优先考虑链接器稍后找不到的类静态

于 2013-04-14T11:16:44.520 回答
4

我想你已经m_curCounters在柜台声明了。
然后你需要将它定义为

unsigned int Counter::m_curCounters = 0;
于 2013-04-14T11:13:11.590 回答
1

既然你给了我们一半的代码,是时候进行一些心理调试了!这是我认为您在头文件中的内容:

class Counter
{
    static unsigned int m_curCounters;
};

因此,在您的 .cpp 文件中,您忘记了在类的范围内定义静态变量。你需要:

unsigned int Counter::m_curCounters = 0;
于 2013-04-14T11:14:08.463 回答