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>*>,而不是指针。

或者,如果你想要一个二维数组,你可以使用:

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]在数组中使用。在该行中,您说它应该是一个大小为 i+1 的新数组,类型Queue<Chain<Product>*>是错误的。而是使用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 回答