使用const变量作为维度将矩阵声明为类成员时编译器错误

时间:2018-06-10 16:32:01

标签: c++ class matrix static const

我有一个定义为

的类
class A{

public :
    A(const int arg){
        x = arg;
    }
    const int x;
    int arr[x][x];
};

但编译器给出了

错误:无效使用非静态数据成员'A :: x'|

但我将x声明为static const int x

错误:数组绑定在']'标记|

之前不是整数常量

任何解决方案。

编辑:这个问题已被标记为另一个问题的重复,但这个问题更多的是概念,它没有提供解决方案。我知道区别,但除了矢量之外,我不知道问题的解决方案,这也在其中一个答案中提到。

并删除重复标记,因为这与帖子不同,此问题被标记为重复。

感谢。

1 个答案:

答案 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))
    {}
};