【问题标题】:static function error LNK2001: unresolved external symbol "private: static int B::s_nValue" [duplicate]静态函数错误 LNK2001:未解析的外部符号“私有:静态 int B::s_nValue”[重复]
【发布时间】:2015-05-01 12:31:44
【问题描述】:
#pragma once
class B
{
private:
  static int s_nValue;

public:
  B();
  ~B();

  static int GetValue() { return s_nValue; }

  static void SetValue(int value){ s_nValue = value; }

};

int _tmain(int argc, _TCHAR* argv[])
{
  int i = 0;
  B::SetValue(5);

  std::cout << B::GetValue();

  cin>> i;

  return 0;
}

我正在尝试掌握静态函数的使用。在这种情况下,SetValue() 和 GetValue() 在类 B 中定义。它们在 main 中没有对象定义的情况下被调用。这应该可以,但是我收到了一个未解决的外部符号错误 2001。预编译的标头选项已关闭。

我怎样才能摆脱这个错误?

使用 MS Visual Studio 2012

【问题讨论】:

    标签: c++ function static


    【解决方案1】:

    你的静态变量只被声明但没有被定义,你应该在你的 cpp 文件中这样做:

    int B::s_nValue = 0;
    

    【讨论】:

    • 谢谢!似乎我应该自己想出一个,但静态是一个奇怪的东西。
    猜你喜欢
    • 2015-12-31
    • 1970-01-01
    • 2011-09-02
    • 2015-07-29
    • 2020-07-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    相关资源
    最近更新 更多