使用const变量声明数组

时间:2015-09-30 23:32:15

标签: c++ multidimensional-array

我正在尝试创建一个多维数组,但是当我传递一个const int值时,我无法编译。错误是每个维度的“表达式必须具有常量值”。

class Matrix {

 public:
     Matrix(int rowCount, int columnCount, int scalarInput) { 

        const int row_C = rowCount;
        const int colum_C = columnCount;
        const int scalar_C = scalarInput;

        matrixCalculation(row_C, colum_C, scalar_C);
    }


    void matrixCalculation(const int i, const int j, const int s) {

        int matrixArray[i][j]; // error here, i and j: "expression must have a constant value"


    }

};

由于

1 个答案:

答案 0 :(得分:0)

数组维度必须编译时常量,而const并不意味着。

初始化后const对象无法更改其值,但可以在运行时确定其初始值(例如const int x = rand()),因此,通常,这些对象不是数组维度的有效候选对象。

介绍...... constexpr

如果您在维度前面加上关键字constexpr,那么您将有一个良好的开端。您的编译器将阻止您违反constexpr的合同,从而使您能够使用闪亮的新constexpr对象作为数组维度。

唉,在这个例子中,你已经打破了这个合约,因为输入是非常量的。坚韧的饼干。

改为使用矢量。