我有两个类 Node 和 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);
}
}