首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++:new-expression中的数组大小必须为常量

c++:new-expression中的数组大小必须为常量
EN

Stack Overflow用户
提问于 2017-07-10 00:16:01
回答 1查看 2.9K关注 0票数 2

我试图使用一个常量整数作为边界来声明一个二维数组,但是这个错误仍然存在。

代码语言:javascript
复制
template <class Type>
matrixType<Type>::matrixType(){
    h = maxSize;
    w = maxSize;
    matrix = new Type[maxSize][maxSize];
    defaultFill();
}

matrix声明为:

代码语言:javascript
复制
Type* matrix;

并将maxSize声明为:

代码语言:javascript
复制
const int maxSize = 4;
EN

回答 1

Stack Overflow用户

发布于 2017-07-10 00:25:56

简而言之,new操作符有以下语法:new typename [items_count]new Type[maxSize][maxSize]表达式尝试分配Type[maxSize]类型的maxSize数组,并返回指向Type[maxSize]的指针。不能用new来分配多维数组。使用Type[maxSize]是非法的,因为maxSize在编译时是未知的。如果你想分配一个多维数组,你应该分配一个指向Type的指针数组,然后用新分配的指向Type数组的指针填充它。

代码语言:javascript
复制
Type * * matrix = new Type *[maxSize];
for(size_t row = 0; maxSize != row; ++row)
{
    matrix[row] = new Type[maxSize];
}

或作为单个数组

代码语言:javascript
复制
Type * matrix = new Type[maxSize * maxSize];
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44998478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档