我有一个定义为
的类class A{
public :
A(const int arg){
x = arg;
}
const int x;
int arr[x][x];
};
但编译器给出了
错误:无效使用非静态数据成员'A :: x'|
但我将x声明为static const int x
错误:数组绑定在']'标记|
之前不是整数常量任何解决方案。
编辑:这个问题已被标记为另一个问题的重复,但这个问题更多的是概念,它没有提供解决方案。我知道区别,但除了矢量之外,我不知道问题的解决方案,这也在其中一个答案中提到。
并删除重复标记,因为这与帖子不同,此问题被标记为重复。
感谢。
答案 0 :(得分:0)
首先,您不能将x
声明为static const int
。其次,在运行时分配给x
时,编译时完成数组的创建。
要解决您的问题,请改用std::vector
:
struct A {
std::vector<std::vector<int>> arr;
A(int arg)
: arr(arg, std::vector<int>(arg))
{}
};