如何更正它,以便我可以显示静态 int
cout<<A::a<<endl;
像下面的例子一样?
#include <iostream>
using namespace std;
class A{
public:
static int a = 0;
};
int main()
{
cout << A::a << endl;
return 0;
}
任何一个:
class A{
public:
static const int a = 0;
};
(常量整数类型可以在类定义中初始化)
或者
class A{
public:
static int a;
};
int A::a = 0;
在类定义中,静态成员只被声明而不被定义。默认情况下,只有定义具有初始化,但对于整型的静态常量,声明可以具有初始化。
您的程序中的问题是使用了静态成员(对于非常量静态成员属性std::cout << A::a
是odr-use ),但是您没有定义。您需要通过添加以下内容在程序的单个翻译单元中定义变量:
int A::a = value;
(请注意,由于静态成员不是const,因此您不能在类定义中提供初始化程序,因此您需要= 0
从类定义中的声明中删除 。还要注意,您可以跳过= value
初始化中的 if value == 0
,因为静态初始化会A::a
在任何其他初始化之前设置为 0)