|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.08.2009, 15:21 | #11 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
Создайте конструктор копии: UniSchet(const UniSchet &obj); и в операторе что-то в этом роде: Код:
|
|
17.08.2009, 15:49 | #12 |
Пользователь
Регистрация: 29.03.2009
Сообщений: 22
|
|
17.08.2009, 16:35 | #13 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
С указателями ничего не намудрили в конструкторе копии? Может там одно и то же 2 раза удаляется в деструкторе или еще чего... Код конструктора копии в общем показывайте и текст ошибки с которой вылетает
|
17.08.2009, 17:01 | #14 |
Пользователь
Регистрация: 29.03.2009
Сообщений: 22
|
Код:
Код:
[C++ Error] UniSchet.h(101): E2025 Assignment to 'this' not allowed, use X:: operator new instead |
17.08.2009, 17:22 | #15 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Поправочка: ++(*this); забыл я что-то, что this - это указатель.
Конструктор копии неправильный. B и S нельзя тупо копировать из obj, потому как получается, что 2 объекта уже будут хранить указатели на одни и те же области данных и в деструкторе одно и то же уничтожать. Попробуй как-то так: Код:
|
17.08.2009, 17:41 | #16 |
Пользователь
Регистрация: 29.03.2009
Сообщений: 22
|
Скомпелировался....
Вылетает при работе: Debugger exception notification: Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00402554 in module ‘Project1.exe’. Read of address 00000001 '.Process stopped. Use Step or Run to continue. |
17.08.2009, 17:57 | #17 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Ну пошагово поттлаживайте на какой именно операции вылетает. Мне просто лень это всё собирать в проект и тестить. Где-то косяк с указателями полюбому. Точки останова поставьте в конструкторах копии и инкрементах и посмотрите на какой именно строке какого метода вылетает ошибка.
|
17.08.2009, 19:02 | #18 |
Пользователь
Регистрация: 29.03.2009
Сообщений: 22
|
Есть ощущение, что я просто не правильно вызов этих методов пишу:
Код:
Код:
|
17.08.2009, 19:09 | #19 |
Пользователь
Регистрация: 29.03.2009
Сообщений: 22
|
Код:
|
17.08.2009, 19:21 | #20 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Ну всё правильно. Ошибка такая же, что и я в постинкременте допустил сначала. ++S - это инкремент указателя. Правильно именно ++*S в данном случае. Ну или UniSchet создавайте на стеке, а не в куче:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите найти ошибку! | frantic150 | Microsoft Office Excel | 0 | 26.06.2009 18:23 |
Помогите найти ошибку! | Студентка@ | Помощь студентам | 3 | 21.05.2008 14:21 |
Помогите найти ошибку | KnDmPetr | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 11.04.2008 15:48 |