对象数组初始化 (C++)

Array of Objects Initialization (C++)

本文关键字:C++ 初始化 数组 对象      更新时间:2023-10-16

嘿伙计们,我是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];
}

在循环中它抛出我错误:从队列*>*到int的转换无效

知道吗?

它应该是

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];

这显然是错误的。

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>*>()
}

注意*要查看您错误的简化版本,请参阅其他人的帖子(我不会复制代码 - 浪费空间)。