Ничего общего с Qt, это чистый синтаксис C ++
QList<Class*>
- тип QList<Class*>* _lstChildren
- переменная, указатель на вышеупомянутый тип = new QList<Class*>()
- инициализация переменной-указателя новым выражением
QList
является аналогом Qt std::deque
, std::list
(не является прямым эквивалентом того или другого), Class*
является типом длябыть сохраненным переданным как параметр шаблона.
()
- это часть нового выражения для инициализации указателя со значением, указывающим на созданный объект типа QList<Class*>
.
В этом случае он вызывает конструктор по умолчанию - аргументы внутри скобок не указаны.Если бы у QList
не было конструкторов вообще, это означало бы инициализацию значения (по нулям) созданного объекта.
Ваш список содержит необработанные указатели, поэтому вы должны дать ему указатели на Class*
, например, чтобы создатьобъект в динамической памяти.
QList<Class*>* lstChildren = new QList<Class*>();
Class* child1= new Class();
lstChildren->append(child1);
Так получается, что QList
не должен удалять объекты, на которые указывают эти указатели, он будет уничтожать только сами указатели.Для очистки необходимо использовать
qDeleteAll(*lstChildren);
lstChildren->clear();
или удалить их по отдельности (и удалить из списка).