У меня есть вопрос об удалении элемента из QList.
"myclass.h":
class node2D : public QObject
{
Q_OBJECT
public:
node2D(){++s_NCount;};
~node2D(){--s_NCount;};
int checkCount(){return s_NCount;};
private:
static int s_NCount;
};
"myclass.cpp":
int node2D::s_NCount = 0;
"main.cpp ":
void main()
{
int i,max_el(4);
QList<node2D*> *Nlist;
Nlist = new QList<node2D*>;
node2D controlNode;
for (i = 0 ;i < max_el ; i++)
{
Nlist->append(new node2D);
}
cout << "Nlist size before: " << Nlist->size() << endl;
cout << "Number of nodes before removing: " << controlNode.checkCount() << endl;
Nlist->clear();
cout << "NList size after: " << Nlist->size() << endl;
delete Nlist;
cout << "Number of nodes after removing: " << controlNode.checkCount() << endl;
}
После выполнения я получаю:
- Размер NList перед: 4
- Количество узлов перед удалением: 5
- Размер NList после: 0
- Количество узлов после удаления: 5
Меня беспокоит тот факт, что число объектов node2D по-прежнему равно 5 вместо 1.
Конечно, это можно сделать так:
for (i = 0; i < Nlist->size(); i++)
{
delete (*Nlist)[i];
}
Nlist->clear();
, но не следует ли автоматически удалять объекты node2D, пока Nlist-> clear ()?
Или это происходит только при наличии родительско-дочерних отношений?
Заранее спасибо,
Pawel