QList,附加对象,丢失静态成员
QList, appending object, loosing static members
我正在我的对象中构建一个 QList
:
QList<clsXMLnode*> mlstChildren;
在我追加子节点的方法中:
void clsXMLnode::appendChild(clsXMLnode* pobjChild) {
assert(pobjChild != NULL);
mlstChildren.append(pobjChild);
// ...
当我使用调试器单步执行时,我可以看到 pobjChild
具有它应该与之关联的所有静态数据,但是附加到 'mlstChildren' 的节点具有 none 的静态成员。使用调试器我可以看到 'pobjChild' 仍然正确,而 'mlstChildren' 虽然它具有相同的子节点指针地址,但它的内容与 'pobjChild' 的内容不匹配,为什么?
编辑:
这似乎是调试器中的错误,我修改了我的 appendChild
方法如下:
void clsXMLnode::appendChild(clsXMLnode* pobjChild) {
assert(pobjChild != NULL);
int intNewIdx = mlstChildren.length();
mlstChildren.append(pobjChild);
clsXMLnode* pobjCheck = mlstChildren.at(intNewIdx);
// ...
我可以在调试器中看到 pobjCheck
的内容与 pobjChild
的内容完全匹配并且所有静态成员都完好无损,但是如果我在调试器中展开 mlstChildren
,虽然 class 地址匹配 pobjChild
,但静态数据的内容不匹配。
这不是真正的答案,但我认为我已经证明它是 Qt 调试器中几个持续存在的错误之一,我已将其报告给 Qt 开发人员论坛:
我正在我的对象中构建一个 QList
:
QList<clsXMLnode*> mlstChildren;
在我追加子节点的方法中:
void clsXMLnode::appendChild(clsXMLnode* pobjChild) {
assert(pobjChild != NULL);
mlstChildren.append(pobjChild);
// ...
当我使用调试器单步执行时,我可以看到 pobjChild
具有它应该与之关联的所有静态数据,但是附加到 'mlstChildren' 的节点具有 none 的静态成员。使用调试器我可以看到 'pobjChild' 仍然正确,而 'mlstChildren' 虽然它具有相同的子节点指针地址,但它的内容与 'pobjChild' 的内容不匹配,为什么?
编辑:
这似乎是调试器中的错误,我修改了我的 appendChild
方法如下:
void clsXMLnode::appendChild(clsXMLnode* pobjChild) {
assert(pobjChild != NULL);
int intNewIdx = mlstChildren.length();
mlstChildren.append(pobjChild);
clsXMLnode* pobjCheck = mlstChildren.at(intNewIdx);
// ...
我可以在调试器中看到 pobjCheck
的内容与 pobjChild
的内容完全匹配并且所有静态成员都完好无损,但是如果我在调试器中展开 mlstChildren
,虽然 class 地址匹配 pobjChild
,但静态数据的内容不匹配。
这不是真正的答案,但我认为我已经证明它是 Qt 调试器中几个持续存在的错误之一,我已将其报告给 Qt 开发人员论坛: