![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]() Цитата:
Создайте конструктор копии: UniSchet(const UniSchet &obj); и в операторе что-то в этом роде: Код:
![]() |
|
![]() |
![]() |
![]() |
#12 |
Пользователь
Регистрация: 29.03.2009
Сообщений: 22
|
![]() |
![]() |
![]() |
![]() |
#13 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]()
С указателями ничего не намудрили в конструкторе копии? Может там одно и то же 2 раза удаляется в деструкторе или еще чего... Код конструктора копии в общем показывайте и текст ошибки с которой вылетает
|
![]() |
![]() |
![]() |
#14 |
Пользователь
Регистрация: 29.03.2009
Сообщений: 22
|
![]() Код:
Код:
[C++ Error] UniSchet.h(101): E2025 Assignment to 'this' not allowed, use X:: operator new instead |
![]() |
![]() |
![]() |
#15 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]()
Поправочка: ++(*this); забыл я что-то, что this - это указатель.
Конструктор копии неправильный. B и S нельзя тупо копировать из obj, потому как получается, что 2 объекта уже будут хранить указатели на одни и те же области данных и в деструкторе одно и то же уничтожать. Попробуй как-то так: Код:
![]() |
![]() |
![]() |
![]() |
#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 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]()
Ну пошагово поттлаживайте на какой именно операции вылетает. Мне просто лень это всё собирать в проект и тестить. Где-то косяк с указателями полюбому. Точки останова поставьте в конструкторах копии и инкрементах и посмотрите на какой именно строке какого метода вылетает ошибка.
|
![]() |
![]() |
![]() |
#18 |
Пользователь
Регистрация: 29.03.2009
Сообщений: 22
|
![]()
Есть ощущение, что я просто не правильно вызов этих методов пишу:
Код:
Код:
|
![]() |
![]() |
![]() |
#19 |
Пользователь
Регистрация: 29.03.2009
Сообщений: 22
|
![]() Код:
|
![]() |
![]() |
![]() |
#20 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]()
Ну всё правильно. Ошибка такая же, что и я в постинкременте допустил сначала. ++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 |