Visual c++ 将值赋给静态变量时出错

Visual c++ 将值赋给静态变量时出错,visual-c++,Visual C++,在这段代码中,我不知道为什么编译器不允许我将值0赋给变量x。我突出显示了导致问题的行 类列表{ 私人: INTP; 公众: 静态int x; 全部无效(); }; 无效列表::总计(列表*a){ x+=a->p; cout运算符+=试图增加x的值。在使用它之前,您需要初始化x。您已经在类中声明了静态,但尚未为其定义变量 class List{ private: int p; public: static int x; // this is just a declaratio

在这段代码中,我不知道为什么编译器不允许我将值0赋给变量x。我突出显示了导致问题的行

类列表{
私人:
INTP;
公众:
静态int x;
全部无效();
};
无效列表::总计(列表*a){
x+=a->p;

cout运算符
+=
试图增加
x
的值。在使用它之前,您需要初始化
x

您已经在类中声明了静态,但尚未为其定义变量

class List{
private:
    int p;
public:
    static int x;    // this is just a declaration
    void total();
};
您需要定义它,通常在关联的cpp文件中:

List::x = 0;        // define variable and initialise
引述:

9.4.2静态数据成员
静态数据成员在其类定义中的声明是 不是定义,可能是不完整的类型,而不是 cv限定的void。静态数据成员的定义 应出现在包含成员类的命名空间范围中 定义。在命名空间范围的定义中 静态数据成员应通过其类名限定,使用:: 运算符的定义中的初始值设定项表达式 静态数据成员在其类的范围内 (basic.scope.class)


你得到了什么错误?非常感谢,现在它是有意义的。它在理解静态变量方面帮助很大!
List::x = 0;        // define variable and initialise