我正在尝试创建一个多维数组,但是当我传递一个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"
}
};
由于
答案 0 :(得分:0)
数组维度必须编译时常量,而const
并不意味着。
初始化后const
对象无法更改其值,但可以在运行时确定其初始值(例如const int x = rand()
),因此,通常,这些对象不是数组维度的有效候选对象。
介绍...... constexpr
。
如果您在维度前面加上关键字constexpr
,那么您将有一个良好的开端。您的编译器将阻止您违反constexpr
的合同,从而使您能够使用闪亮的新constexpr
对象作为数组维度。
唉,在这个例子中,你已经打破了这个合约,因为输入是非常量的。坚韧的饼干。
改为使用矢量。