静态函数错误LNK2001:未解析的外部符号“private:static int B :: s_nValue”

时间:2015-02-28 23:10:54

标签: c++ function static

#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

1 个答案:

答案 0 :(得分:1)

您的静态变量只是声明但未定义,您应该在cpp文件中执行此操作:

int B::s_nValue = 0;