课堂上未解决的外部符号

时间:2017-09-30 22:28:14

标签: c++ static linker .obj

我一直在努力摆脱我的错误,但它不会消失,我已查找其他帖子,但似乎没有任何效果。

我的 .H 文件包含以下内容:

using namespace std;   

     class common
    {
    public:
     common();

      static double common::s_a;
      static double common::s_b;

然后我得到一个 .CPP 文件,我已经定义了这样的变量:

#include "common.h"

common::common()
{
  common::s_a = 100;
  common::s_b = 100;
}

然后我收到此错误消息(实际变量名称而不是a)

  

common.obj:错误LNK2001:未解析的外部符号“public:static   double common :: s_playerMaxHealth“(?s_playerMaxHealth @ common @@ 2NA)

编辑:问题是静态的,如果我删除静态我不再有错误了。但是我需要使用静态来实现它的意图。

1 个答案:

答案 0 :(得分:0)

必须这样定义这些变量(在.cpp文件中,在任何函数之外):

double common::s_a;
double common::s_b;

这是一个声明(不是定义):

class common
{   
  static double common::s_a;
  static double common::s_b;

这是一种用途(也不是定义):

common::common()
{
  common::s_a = 100;
  common::s_b = 100;
}