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