我正在尝试使用常量整数作为边界来声明二维数组,但是此错误仍然存​​在。

template <class Type>
matrixType<Type>::matrixType(){
    h = maxSize;
    w = maxSize;
    matrix = new Type[maxSize][maxSize];
    defaultFill();
}

矩阵声明为:
Type* matrix;

并且maxSize声明为:
const int maxSize = 4;

最佳答案

简要地说,new运算符具有以下语法:new typename [items_count]new Type[maxSize][maxSize]表达式尝试分配maxSize类型的Type[maxSize]数组,并返回一个指向Type[maxSize]的指针。无法使用new分配多维数组。使用Type[maxSize]是非法的,因为在编译时不知道maxSize。如果要分配多维数组,则应分配一个指向Type的指针数组,然后用指向Type数组的新分配指针填充它。

Type * * matrix = new Type *[maxSize];
for(size_t row = 0; maxSize != row; ++row)
{
    matrix[row] = new Type[maxSize];
}

或作为单个数组
Type * matrix = new Type[maxSize * maxSize];

关于c++ - C++:new表达式中的数组大小必须恒定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44998478/

10-16 04:32