【问题标题】:Can't increment a static variable不能增加静态变量
【发布时间】:2013-04-14 11:10:14
【问题描述】:

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

【问题讨论】:

  • 试试 ::m_curCounters++;

标签: c++


【解决方案1】:

我认为这里发生了什么,您在 counter.h 中声明了 m_curCounters,并且您在 cpp 中创建了一个新的本地静态。 但是类静态需要通过在 cpp 中将它们定义为 unsigned int Counter::m_curCounters = 0; 来对链接器可见。

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

【讨论】:

    【解决方案2】:

    我想你在 Counter 中声明了 m_curCounters
    然后你需要将它定义为

    unsigned int Counter::m_curCounters = 0;
    

    【讨论】:

      【解决方案3】:

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

      class Counter
      {
          static unsigned int m_curCounters;
      };
      

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

      unsigned int Counter::m_curCounters = 0;
      

      【讨论】:

      • 它不会用静态编译定义。
      猜你喜欢
      • 1970-01-01
      • 2019-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多