嘿伙计们,我是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 *&gt; *到int
的转换无效有什么想法吗?
答案 0 :(得分: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];
这显然是错误的。
答案 1 :(得分: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>*>()
}
注意*要查看错误的简化版本,请参阅其他人的帖子(我不会复制代码 - 浪费空间)。