私は2つのクラスのノードを持っているとNodeContainer:最適な方法
class Node: public QObject
{
NodeContainer* parent;
}
class NodeContainer : QObject
{
bool deleteChild(Node*child)
{
if(childNodes->remove(child))
{
deleteLater(child);
}
}
QList<Node*> childNodes;
}
ノードが親を持っているか、いないことができます。 Nodeクラスの破壊実装するための良い方法は何ですか:
1)は、親にアクセスし、そこ
destroy()
{
if(parent !=0)
{
parent.deleteChild(this);
}
else
{
deleteLater(this);
}
}
2から身を滅ぼす)信号を発信し、親が後で
それを破壊しましょうdestroy()
{
if(parent !=0)
{
//Once the parent receives it, the parent will delete the child.
emit parentYouHaveToDeleteChild(this);
}
else
{
deleteLater(this);
}
}
'子孫の' destroyed'シグナルまで親のフックを持ち、子が 'deleteLater'によって破壊された場合はポインタを設定します。親をチェックする必要はありません。また、あなたの計画は本当に奇妙に見えます。あなたはそれがあなたが望んでいると確信していますか? – pmr
私は小さなテキストエディタ(タグ付き)を作っています。タグが破壊されなければならないと判断した場合、それを削除するにはtagを含むタグを要求する必要があります。一例として(Baab1ba)。 が削除されることを決定した場合、タグ1にその子リストから削除するように要求する必要があります。 –
Anton
あなた自身のデータ構造を書くのではなく、['QDomDocument'](http://qt-project.org/doc/qt-4.8/qdomdocument.html)を使いたくないですか? – alexisdm