![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ANTON_AL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 27.1.2007 Репутация: нет Всего: нет |
Доброе время суток!
Имею код, эквивалентный следующему:
Если раскомментировать тело в деструкторе, то выскачет Debug Assertation Failed. Как с этим бороться, и из за чего мапу не нравится удаление массива в деструкторе класса? Заранее спасибо за помощь. С уважением, Антон! Это сообщение отредактировал(а) ANTON_AL - 27.1.2007, 18:31 |
|||
|
||||
| Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 6 Всего: 29 |
Тут так надо, ИМХО:
Надо написать нормальный конструктор копирования и оператор присваивания. Это сообщение отредактировал(а) Damarus - 27.1.2007, 19:08 |
|||
|
||||
| ANTON_AL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 27.1.2007 Репутация: нет Всего: нет |
Damarus
Всё это я уже делал, не помогает... |
|||
|
||||
| Damarus |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 6 Всего: 29 |
Это:
Делал
Это сообщение отредактировал(а) Damarus - 27.1.2007, 19:36 |
||||
|
|||||
| Lotrex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 9.2.2006 Где: Казань Репутация: 2 Всего: 3 |
Привет, Антон!
Вы какой компилятор используете? Пока что у меня откомпилировалось в MinGW с оптимизацией и без, и все отлично работает. |
|||
|
||||
| ANTON_AL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 27.1.2007 Репутация: нет Всего: нет |
Код эволюционировал вот в такой, теперь выдаёт ошибку:
"Error C2558: No copy constructur aviable"
В чём тут дело ?? Добавлено @ 19:16 Средство разработки: Visual Studio 2005. А вот как компилятор посмотреть, не знаю... Добавлено @ 19:22 Lotrex Средство разработки Visual Studio 2005 А как посмотреть информацию про компилятор ?? Damarus Что то я не понимаю, у меня и у вас код идентичный, но у меня выдаёт ошибку..., может я что то не замечаю... |
|||
|
||||
| Damarus |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 6 Всего: 29 |
Ещё раз:
Это зачем Не понятно. В конструкторе ведь m_iArray = new int[10];. Тогда и тут ставь m_iArray = new int[10]; Добавлено @ 19:24
Ты не замечаешь const |
||||
|
|||||
| ANTON_AL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 27.1.2007 Репутация: нет Всего: нет |
Damarus
Ах мамочки мои!!... const. Добавлено @ 19:26 |
|||
|
||||
| Lotrex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 9.2.2006 Где: Казань Репутация: 2 Всего: 3 |
Антон, Ваш код в MS Visual C 6.0 у меня тоже вызывает ошибку "Assertion Filed"
Код Damarus в MS Visual C 6.0 фурыкает без проблем (пока что). Так что делайте конструктор копирования :-) и все будет чики-пики. И еще - у Вас в конструкторе копирования параметром должна быть не просто ссылка, а константная ссылка. Из-за этого компилер и матюгается скорей всего. |
|||
|
||||
| Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 6 Всего: 29 |
Да ещё. Тут:
delete[] естественно нужен:
Добавлено @ 19:36 Пост от 27.1.2007 19:09 исправил. |
|||
|
||||
| ANTON_AL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 27.1.2007 Репутация: нет Всего: нет |
Cпасибо большое, ребята.....
Вы отвечаете быстрее, чем я задаю вопросы Это сообщение отредактировал(а) ANTON_AL - 27.1.2007, 19:39 |
|||
|
||||
| ANTON_AL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 27.1.2007 Репутация: нет Всего: нет |
Damarus
Тут ещё проблемка возникла, если я хочу в конструкторе пересоздать массив, вылетает ошибка.
Это сообщение отредактировал(а) ANTON_AL - 27.1.2007, 22:49 |
|||
|
||||
| Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 6 Всего: 29 |
||||
|
||||
| ANTON_AL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 27.1.2007 Репутация: нет Всего: нет |
Этот конструктор может ведь вызваться для уже истанцированного объекта ?? Что тогда, если я попытаюсь выполнить строку 53 ??
theClass = theClass2; //It's OK Мне же надо каким то макаром перекинуть массив из правого класса в левый.... Это сообщение отредактировал(а) ANTON_AL - 29.1.2007, 15:20 |
|||
|
||||
| nickless |
|
||||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
Нет, конструкторы вызываются только при инициализации.
Тут вызовется оператор присваивания (operator=) -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |