Vit*_*kyi 0 c++ arrays class constants
为什么这段代码不能编译?
class MyClass
{
const int size = 5;
int arr[size];
};
Run Code Online (Sandbox Code Playgroud)
错误说这size是未声明的标识符。
默认成员初始值设定项(= 5;在您的代码中)仅指定默认情况下非静态数据成员的初始化方式。构造函数可以给它一个不同的值。因此,编译器无法知道它在编译时的值是什么。
因此,您不能A::size在编译时常量表达式中使用。就像你声明一个数组的大小一样。
如果您打算让每个Aasize为 5,那么该变量应该是一个constexpr static成员。或者按照评论中的建议,一个std::array<..., 5>.