对象数组初始化 (C++)
Array of Objects Initialization (C++)
嘿伙计们,我是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>*>()
}
注意*要查看您错误的简化版本,请参阅其他人的帖子(我不会复制代码 - 浪费空间)。
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- C++使用整数的压缩数组初始化对象
- C++初始化基类
- 多成员Constexpr结构初始化
- 复制列表初始化的隐式转换的等级是多少
- 内联映射初始化的动态atexit析构函数崩溃
- 如何在C++中初始化嵌套类中的2个memeber
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 没有用于初始化C++中的变量模板的匹配构造函数
- 在未初始化映射的情况下,将值插入到映射的映射中
- C++成员初始化
- 为什么在C++中首先初始化成员类
- 同时具有"聚合初始化"和"模板推导"
- 初始化具有非默认构造函数的std::数组项的更好方法
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 在C和C++中初始化结构中的数组
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 在函数内部的声明中初始化数组,并在外部使用它
- 继承:构造函数,初始化C++11中基类的类C数组成员