静态 int 初始化
static int initialization
如何更正它,以便我可以通过以下方式显示静态 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;
}
在类定义中,静态成员仅声明而不定义。默认情况下,只有定义具有初始化功能,但对于整型的静态常量,声明可以进行初始化。
程序中的问题是使用了静态成员(std::cout << A::a
是非常量静态成员属性的 odr-use),但您没有定义。您需要通过添加以下内容在程序的单个翻译单元中定义变量:
int A::a = value;
(请注意,由于静态成员不是 const ,因此无法在类定义中提供初始值设定项,因此需要从类定义中的声明中删除= 0
。另请注意,如果value == 0
,则可以跳过初始化中的= value
,因为静态初始化将在任何其他初始化之前A::a
设置为 0)
要么:
class A{
public:
static const int a = 0;
};
(const 整数类型可以在类定义中初始化)
或
class A{
public:
static int a;
};
int A::a = 0;
相关文章:
- 为什么 'main' 函数中的局部 int 变量会自动初始化?
- 在MSDOS编译器上,用大于最大值的值初始化int时输出混乱
- 使用 double 在 C++ 中初始化 int 之间的差异
- 如何在构造函数中初始化int const * const
- 使用memset初始化int数组
- 通过 fstream 函数初始化 int 向量??C++
- 在 c++ 中使用输入字符串的长度初始化 int 数组
- 为什么我不能用 const int 的地址初始化 int*
- 如何使用字符串(字符数组)初始化字符指针,而不是使用整数数组初始化 int 指针
- 如何初始化 int *const *const.
- C++ - 声明和初始化 int 时出现分段错误
- C - 使用类型为 'int 的表达式初始化'int *'的不兼容指针类型
- 错误无法初始化 'int *' 类型的参数,其 rvalue 类型为 'int'
- C++:正在初始化“int Agent::tun_alloc(char*,int)”的参数1[-fpermission]
- C++ 动态数组:不能使用 "void" 类型的值来初始化 "int" 类型的实体
- 无法使用类型 'int (*)[20]' 的右值初始化 'int *' 类型的参数
- 为什么我不能使用 '0x80000000' 来初始化 int 数组?
- 使用 memset 而不是 for 循环初始化 int** 时出现分段错误
- 如何初始化int的向量中的向量
- 初始化"int strcmpi(const char*, const char*)"错误的参数 1