0

こんにちは、私はC ++を初めて使用し、大学でのプロジェクトに至るまで、困難な時期を迎えています。より具体的には、リストとキューのコードを作成しました(リスト名=チェーン、キュー名=キュー、製品は基本的にチェーンフィールドを持つ構造体です)[ところで、誰かが知っている場合は、Sahnisブック(データ構造)を使用しました。私はここで立ち往生しています:

int k=4;
Queue<Chain<Product>*>* x = new Queue<Chain<Product>*> [k];
for(int i=1;i<k;i++)
{
   x[i] = new Queue<Chain<Product>*> [i+1];
}

ループでエラーが発生します:Queue*>*からintへの無効な変換

何か案が?

4

2 に答える 2

2

そのはず

for(int i=0;i<k;i++)   // first index is 0
{
   x[i] = Queue<Chain<Product>*>();
}

なぜなら

Queue<Chain<Product>*>* x = new Queue<Chain<Product>*> [k];

Queue<Chain<Product>*>ポインタではなく、オブジェクトの配列を作成します。

または、2次元配列が必要な場合は、次を使用します。

Queue<Chain<Product>*>** x = new Queue<Chain<Product>*> * [k];
for(int 0=1;i<k;i++)
{
   x[i] = new Queue<Chain<Product>*> [i+1];
}

簡単にするために、基本的に次のことを試みています。

int* x = new int[4];
for ( int i = 0 ; i < 4 ; i++ )
   x[i] = new int[i];

これは明らかに間違っています。

于 2012-05-03T20:13:19.320 に答える
1

その行x[i] = new Queue<Chain<Product>*> [i+1]で彼[i+1]は間違っています。
なんで?さて、あなたは新しいオブジェクトnewキーワードを作成しています。.operator[int x]配列で使用されます。Queue<Chain<Product>*>その行では、障害のあるタイプのサイズi+1の新しい配列である必要があると言っています。代わりに使用するx[i] = Queue<Chain<Product>*>();

したがって、終了コードは次のとおりです。

for(int i=0;i<k;i++)//because indexes begin at 0, not 1.
{
  x[i] = Queue<Chain<Product>*>()
}

注*あなたの間違いの簡略版を確認するには、他の人の投稿を参照してください(コードをコピーしません-スペースを浪費します)。

于 2012-05-03T20:13:49.803 に答える