我正在从事一个项目,该项目需要一个类 QueueArray,它是一个队列数组。自从我使用 c++ 数组以来已经有一段时间了,所以我在调试为什么我的代码抛出错误时遇到了一些麻烦。
我读了Delete an array of queue objects寻求一些灵感(以及在 Google 上花了几个小时),但我仍然遇到以下代码的错误:
#include <iostream>
#include <deque>
#include <queue>
using namespace std;
class QueueArray
{
queue<int> theArray[];
QueueArray::QueueArray(int size)
{
queue<int> theArray[] = new queue<int>[size];
//theArray[] = new queue<int>[size]; //this may be closer, but also giving errors
}
};
错误是:
警告 C4200:使用了非标准扩展:结构/union 中的零大小数组 1> 当 UDT 包含大小为零的数组时,无法生成复制构造函数或复制赋值运算符
和
error C2075: 'theArray': 数组初始化需要大括号
我已经阅读了第二个错误,但我似乎可以弄清楚我需要做什么来修复它。
我需要它是一个可变大小的数组,变量传递给类,这就是为什么我不能在顶部初始化数组的大小,它必须是全局范围的,所以我可以在其他地方使用它类中的函数(类不能通过参数传递数组)。
稍后,队列将是用户定义的类型,但我们现在让它们成为整数队列,不确定这是否会有所不同。我一直看到有人建议在这些情况下使用 vector ,但我别无选择。
如有任何建议,我们将不胜感激。
最佳答案
queue<int>* theArray;
不是
queue<int> theArray[];
关于具有可变大小的 C++ 全局队列数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12657444/