C++ 数组类型int[]不可赋值

C++ 数组类型int[]不可赋值,c++,arrays,stack,C++,Arrays,Stack,我正在使用数组实现一个ADT堆栈。我想在堆栈已满时将数组的大小加倍 const int MAX_SIZE=6//数组堆栈的最大大小 模板 类ArrayStack:公共堆栈接口{ 私人: ItemType项[MAX_SIZE];//堆栈项数组 int top;//top的索引 int itemCount;//堆栈中的项目数量 int-maxsize; 这是我的推送方法: 模板 bool ArrayStack::push(const ItemType和newEntry){ 如果(itemCount

我正在使用数组实现一个ADT堆栈。我想在堆栈已满时将数组的大小加倍

const int MAX_SIZE=6//数组堆栈的最大大小
模板
类ArrayStack:公共堆栈接口{
私人:
ItemType项[MAX_SIZE];//堆栈项数组
int top;//top的索引
int itemCount;//堆栈中的项目数量
int-maxsize;
这是我的推送方法:

模板
bool ArrayStack::push(const ItemType和newEntry){
如果(itemCount==maxsize){//调整数组大小

cout
ItemType items[MAX_SIZE];
是一个固定数组。您不能调整它的大小,不能重新分配它,当然也不能为它分配
ItemType*
指针

对于您尝试执行的操作,
items
需要是
ItemType*
指针,而不是
ItemType[]
数组:

模板
类ArrayStack:公共堆栈接口{
私人:
ItemType*items;//堆栈项数组
...
};

不要忘记初始化构造函数中的
,并调用
delete[]项目;
在析构函数中,并根据实现适当的复制/移动构造函数和复制/移动赋值运算符。

您为什么要手动管理动态数组而不是使用?或者,为什么一开始不使用?实际上,我正在学习“用C++进行数据抽象和解决问题”我在第7章,他们创建了这样的数组堆栈类,在“堆栈满时加倍数组”中正如我在代码中指出的那样,他们确实将数组加倍了。你不能改变固定数组的大小,你只能分配一个新的动态数组并保持指向它的指针。@RemyLebeau我完全同意你的观点,这就是为什么我在这里问这个问题,因为当我在书中看到问题的答案时,如果书中显示如果将指针指定给数组,则说明书本是错误的。