我试图使用常量整数作为边界声明一个二维数组,但是这个错误仍然存在。
template <class Type>
matrixType<Type>::matrixType(){
h = maxSize;
w = maxSize;
matrix = new Type[maxSize][maxSize];
defaultFill();
}
矩阵声明为:
Type* matrix;
和maxSize声明为:
const int maxSize = 4;
答案 0 :(得分:1)
简要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];