添加到QList的对象会丢失其所有成员数据

时间:2011-02-08 15:21:16

标签: qt list member qlist

我正在制作一个名为ControlIcon的自定义类的QList。我创建了ControlIcons,并使用成员变量加载它们,然后将它们添加到列表中。这是附加代码:

this->cueList.append(firstOne);

这是QList的声明:

QList< ControlIcon *> cueList;

如果我在追加后立即中断,我可以看到刚刚添加的ControlIcon中充满了成员,并且显示正常。我查看列表,并且附加的ControlIcon(它附加了一个ControlIcon)根本没有成员。我以前做过自定义对象的QList,所以我很困惑。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

您的自定义类必须是assignable,这意味着它必须提供默认构造函数,复制构造函数和赋值运算符。如果他们不这样做,可能会发生这样奇怪的事情。

答案 1 :(得分:0)

cueList包含指向ControlIcon个对象的指针,但它不负责创建或保留这些ControlIcon个对象。你是如何得到指针firstOne的?如果它指向堆栈上的某些内容,那么当您稍后尝试使用该对象时该对象将无效。如果它是使用new创建的,则会一直有效,直到您使用delete进行清理。

答案 2 :(得分:0)

我将列表的数据类型更改为SerialController(ControlIcon的子级),这是我试图添加到它的,它工作正常。这真的很烦人,因为还有其他类型的控制器,但我想它现在必须工作。