C ++传递QDomDocument指针递归

时间:2013-01-31 19:36:04

标签: c++ qt pointers recursion

我有一个传递QDomDocument指针递归的问题。

也许你可以告诉我我忽略了什么。

QString Node::asXML()
{
QDomDocument *doc = new QDomDocument();

QDomElement ele = doc->createElement(typeInfo());
doc->appendChild(ele);

foreach (Node *child, children)
{
    qDebug() << "Node: " << child->name;
    child->recurseXML(doc, ele);    
}

return doc->toString();
}


void Node::recurseXML(QDomDocument *doc, QDomElement parent)
{
QDomElement node = doc->createElement(typeInfo());
parent.appendChild(node);

QMapIterator<QString, QVariant> i(attributes);
qDebug() << attributes.size();

while(i.hasNext())
{
    i.next();
    node.setAttribute(i.key(), i.value().toString());
    qDebug() << "KEY: " << i.key() << " | VALUE: " << i.value().toString();
}

}

我放弃了从递归中获得的数据,但我不确定为什么。可能我做了一个指针错误,但我没有看到它。也许有人可以帮助我

此致

1 个答案:

答案 0 :(得分:2)

在recurseXML函数中,参数 parent 是一个局部变量。它与您在asXML函数中创建的QDomElement不同,而是它的副本。将更改为引用或指针:

void Node::recurseXML(QDomDocument *doc, QDomElement parent)

- &GT;

void Node::recurseXML(QDomDocument *doc, QDomElement& parent)