C++ 为什么我会得到;无效使用非静态数据成员“;尝试在类内创建数组时出错?
我创建了一个长度为x的数组,但是我得到了一个错误 非静态数据成员Test::x的使用无效 我试图替换C++ 为什么我会得到;无效使用非静态数据成员“;尝试在类内创建数组时出错?,c++,C++,我创建了一个长度为x的数组,但是我得到了一个错误 非静态数据成员Test::x的使用无效 我试图替换intnewarray[x]带有int newArray=newint[x]但仍然不起作用。 当我在构造函数中声明newArray[x]或将static const放在int x=10之前时,代码成功运行。 为什么呢 #include <iostream> #include <vector> using namespace std; class Test { privat
intnewarray[x]代码>带有int newArray=newint[x]代码>但仍然不起作用。
当我在构造函数中声明newArray[x]
或将static const
放在int x=10
之前时,代码成功运行。
为什么呢
#include <iostream>
#include <vector>
using namespace std;
class Test
{
private:
int x = 10;
int newArray[x];
public:
Test();
~Test();
};
int main()
{
return 0;
}
#包括
#包括
使用名称空间std;
课堂测试
{
私人:
int x=10;
int newArray[x];
公众:
Test();
~Test();
};
int main()
{
返回0;
}
intnewarray[x]
不起作用,因为需要在编译时知道静态数组的大小。将static constexpr
添加到x
的声明中,使其成为编译时常量,这就是代码编译的原因。
intnewarray=newint[x]
也不起作用,因为运算符返回的指针不能指定给整数。说了算,考虑使用。你可能想读这个:数组的大小必须在编译时知道。如果不可能,请使用vector
。不要以使答案无效的方式编辑问题please@Downvoter有人能建议对此进行改进或纠正吗?