![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| 0000 |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.7.2006 Где: Нижний Новгород Репутация: нет Всего: 5 |
Добрый вечер всем..с C++ у меня тяжко..объясните плз. один момент..
допустим есть класс X.. в нем храним массивчик из элементов того же типа X... как правильно удалить?? вот код X.h
X.cpp
main.cpp
вот на удалении x1 и происходит ругань...плз, как удалить правильно такую структурку элементов? спасибо |
||||||
|
|||||||
| DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
Ты этим ни байта не резервируешь. -------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
| Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 7 Всего: 18 |
В C++ запрещены массивы из 0 элементов
-------------------- Подпись больше не нужна |
|||
|
||||
| DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
По идее, каждый раз нужно резервировать место, когда идет добавление. Это сообщение отредактировал(а) DjoNIK - 21.11.2007, 23:44 -------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
| UnrealMan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
||||
|
||||
| 0000 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.7.2006 Где: Нижний Новгород Репутация: нет Всего: 5 |
разве в C++ запрещены массивы из 0 элементов?? странно...я просто выделяю память через new, но не заполняю массив...
я больше по .NET, так вот это ассоциируется с созданием пустого листа (коллекции)...выделяешь память, не добавляя элементов.... в общем + 1 для DjoNIK, спасибо, именно это и надо было сделать!!! THX |
|||
|
||||
| UnrealMan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Создать массив нулевой длины можно, но только затем, чтобы потом его удалить Это тебе std::vector надо использовать. Либо, если по каким-то причинам vector не подходит, самому выделять сырую память вызовом operator new с последующим размещением в ней объектов с помощью placement new. |
|||
|
||||
| Ln78 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 25.11.2006 Репутация: 13 Всего: 15 |
В самом начале обычно следует проверять:
И перед тем, как вызывать new следует освободить уже занятую. Можно проверить, если размерности совпадают, то операции освобождения/выделения можно не делать, просто присвоить новые значения. Я что-то не соображу, а зачем нужен такой класс? Для списков обычно достаточно одного-двух штук, а здесь целый массив, каждый из которых - тоже массив, и т.д. Можно привести пример, когда такая конструкция целесообразна? Это сообщение отредактировал(а) Ln78 - 22.11.2007, 08:57 |
||||||
|
|||||||
| 0000 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.7.2006 Где: Нижний Новгород Репутация: нет Всего: 5 |
например для хранения вершин графа..в вершинах содержится инфа о смежных... хотя тут действительно может лучше использовать vector |
|||
|
||||
| Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 7 Всего: 18 |
У меня просто отложилась фраза Александреску "в C++ массивы нулевой длины запрещены", но там говорилось о массивах создающихся статически. Вот чего то и ступил. Извините, UnrealMan, что задел вас (уж не знаю за что)... Это сообщение отредактировал(а) Greeen - 22.11.2007, 13:10 -------------------- Подпись больше не нужна |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
У меня тоже отложилась и я тоже как то раз "задел" этим UnrealMan'а -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |