Название: удаление объектов из qvector Отправлено: deaks от Ноябрь 26, 2010, 20:10 Здравствуйте,
как правильно удалять объекты из массива?так как в моем случае удаления не происходит. в том числе если использовать pop_функции пример кода; Код:
метод getArrHost возвращает массив QVector<CHost*>. предварительно элементы в массив класс как Код: CHost *tagHost = new CHost(); Название: Re: удаление объектов из qvector Отправлено: Пантер от Ноябрь 26, 2010, 20:16 Учи плюсы. tagHosts->getArrHost() возвращает не сам объект, а его копию.
Название: Re: удаление объектов из qvector Отправлено: eugene от Ноябрь 26, 2010, 20:43 QVector<CHost*> - массив указателей. Значит чтобы удалить нужно сделать delete tagHost и затем удалить его из списка ремувом. Вот только при вызове getArrHost вернется копия массива, и там, откуда его берет getTagHosts() он останется неизменным. Что может случится при обращении к несуществующему экземпляру все знают. Можно попробовать вернуть не сам массив а указатель на него.
Название: Re: удаление объектов из qvector Отправлено: deaks от Ноябрь 26, 2010, 23:31 Значит чтобы удалить нужно сделать delete tagHost и затем удалить его из списка ремувом. Вот только при вызове getArrHost вернется копия массива, и там, откуда его берет getTagHosts() он останется неизменным. Что может случится при обращении к несуществующему экземпляру все знают. Можно попробовать вернуть не сам массив а указатель на него. ну да, delete tagHost не выход. а что нам даст указатель на массив?хм... Название: Re: удаление объектов из qvector Отправлено: Пантер от Ноябрь 26, 2010, 23:35 В tagHosts определи функцию вида:
Код
Название: Re: удаление объектов из qvector Отправлено: deaks от Ноябрь 26, 2010, 23:45 да, именно так тоже делал, но результат примерно такой(удалял нулевой элемент):
для сравнения показываю нулевой и первый, после вызова функции удаления элемента из класса CHosts (http://i047.radikal.ru/1011/5f/ffdbbb34ddbd.png) Название: Re: удаление объектов из qvector Отправлено: deaks от Ноябрь 27, 2010, 00:24 все, в порядке, разобрался!
Название: Re: удаление объектов из qvector Отправлено: eugene от Ноябрь 27, 2010, 13:25 ну да, delete tagHost не выход. а что нам даст указатель на массив?хм... По этому указателю будет лежать нужный массив, а не его копия. Но это некошерно, лучше сделать как предложил Пантер. Название: Re: удаление объектов из qvector Отправлено: Igors от Ноябрь 27, 2010, 14:07 Я наблюдаю 4 обращения tagHost->. поэтому не лучше ли сначала сделать этот кусок методом класса CHosts (тем более что он его модифицирует)? Вероятно после этого необходимость в ужасном getArrHost отпадет сама собой
|