私は、キューの配列であるクラス QueueArray を必要とするプロジェクトに取り組んでいます。C++ 配列を使用してからしばらく経ちましたので、コードがエラーをスローする理由をデバッグするのに問題があります。
いくつかのインスピレーションのためにキューオブジェクトの配列を削除することを読みました(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: 非標準の拡張機能が使用されています: 構造体/共用体のサイズがゼロの配列 1> UDT にサイズがゼロの配列が含まれている場合、コピー ctor またはコピー代入演算子を生成できません
と
エラー C2075: 'theArray': 配列の初期化には中括弧が必要です
2番目のエラーについて読みましたが、それを修正するために何をする必要があるかを理解しているようです.
クラスに変数が渡された可変サイズの配列である必要があります。そのため、配列のサイズを最初に初期化できません。グローバルスコープでなければならないため、内部の他の関数で使用できますクラス (クラスは、パラメーターを介して配列を渡すことはできません)。
後で、キューはユーザー定義型になりますが、現在は int のキューにしていますが、それが違いを生むかどうかはわかりません。このような場合にベクターの使用を提案している人をよく見かけますが、これについては選択肢がありません。
任意の提案をいただければ幸いです。