C++ 为什么我会得到;无效使用非静态数据成员“;尝试在类内创建数组时出错?

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

我创建了一个长度为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
{
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有人能建议对此进行改进或纠正吗?