我正在尝试使用常量整数作为边界来声明二维数组,但是此错误仍然存在。
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/