Объекты, добавленные в QList, теряют все данные своих членов - PullRequest
0 голосов
/ 08 февраля 2011

Я делаю QList пользовательского класса с именем ControlIcon.Я создаю ControlIcons и загружаю их переменными-членами, а затем добавляю их в список.Вот код добавления:

this->cueList.append(firstOne);

Вот объявление QList:

QList< ControlIcon *> cueList;

Если я сломаю сразу после добавления,Я вижу, что только что добавленный ControlIcon полон членов и выглядит нормально.Я смотрю в список, и ControlIcon, который был добавлен (и он добавляет ControlIcon), не имеет членов вообще.Я сделал QList пользовательских объектов раньше, поэтому я очень запутался.Может ли кто-нибудь помочь?

Ответы [ 3 ]

0 голосов
/ 08 февраля 2011

cueList содержит указатели на ControlIcon объекты, но не отвечает за создание или сохранение этих ControlIcon объектов.Как вы получили указатель firstOne?Если он указывает на что-то в стеке, этот объект будет недействительным, если вы попытаетесь использовать его позже.Если он был создан с помощью new, он останется действительным, пока вы не очистите его с помощью delete.

0 голосов
/ 09 февраля 2011

Я изменил тип данных списка на SerialController (дочерний элемент ControlIcon), что я и пытался добавить к нему, и он отлично работает. Это действительно раздражает, потому что есть другие типы контроллеров, но я думаю, что сейчас это должно сработать.

0 голосов
/ 08 февраля 2011

Ваш пользовательский класс должен быть назначаемый , что означает, что он должен предоставлять конструктор по умолчанию, конструктор копирования и оператор присваивания.Если этого не произойдет, могут произойти такие странные вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...