0 / 0 / 0
Регистрация: 27.02.2016
Сообщений: 68
|
||||||
1 | ||||||
При вызове деструктора в строке delete[] data выбрасывается исключение13.12.2019, 20:32. Показов 3582. Ответов 15
Метки нет (Все метки)
вот как раз вопрос по этой теме. программа отрабатывает все команды и в конце при вызове деструктора в строке delete[] data выбрасывает исключение. Где искать? Что делать? maxsize делала и в классе и вне класса статической переменной, ничего не помогает.
0
|
13.12.2019, 20:32 | |
Ответы с готовыми решениями:
15
Ошибка при вызове деструктора (при вызове delete в деструкторе) Выбрасывается исключение при вызове функций из библиотеки glut Выбрасывается исключение при создании класса Выбрасывается исключение при попытке подключения к БД |
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
13.12.2019, 21:07 | 2 |
Увидеть бы выражение, в котором выбрасывается исключение, а по этому обрывку можно сказать, что не хватает конструктора по умолчанию и оператора присваивания
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
13.12.2019, 21:08 | 4 |
Также в конструкторе копирования почему то не копируются maxsize и cursize
1
|
11 / 10 / 7
Регистрация: 07.05.2013
Сообщений: 248
|
||||||
13.12.2019, 21:18 | 5 | |||||
я думаю тут cursize и maxsize поля класса
да и к тому же maxsize присваивается значение входного параметра n Добавлено через 2 минуты если я правильно помню, сначала надо очистить элементы (пройтись по всем и вызвать у каждого delete), а затем выполнить удаление непосредственно у переменной ну т.е что-то вроде:
0
|
0 / 0 / 0
Регистрация: 27.02.2016
Сообщений: 68
|
|||||||||||
14.12.2019, 16:05 [ТС] | 6 | ||||||||||
весь код: делаю класс, конструктор копирования есть.
а если пытаюсь удалять поэлементно - не дает, подчеркивает data красным
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
||||||
14.12.2019, 17:18 | 7 | |||||
NNNNNNNNN,
0
|
0 / 0 / 0
Регистрация: 27.02.2016
Сообщений: 68
|
|
14.12.2019, 20:06 [ТС] | 8 |
исключение на строчку data[i] = D[i];
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
14.12.2019, 20:13 | 9 |
покажи 16 строку функции main
Добавлено через 5 минут Хотя лучше всю функцию main(только выдели комментарием строку, которая в твоем проекте №16)
0
|
Вездепух
12761 / 6644 / 1788
Регистрация: 18.10.2014
Сообщений: 16,801
|
|
14.12.2019, 20:40 | 10 |
Сообщение было отмечено Kuzia domovenok как решение
Решение
Конструктор копирования есть, но в нем написана чушь. Оператор присваивания есть, но в нем написана чушь... Дальше можно не смотреть.
Вам уже показали пальцем на чушь в конструкторе копирования. Зачес вы снова приводите этот код? Добавлено через 2 минуты Что такое "удалять поэлементно"?
0
|
zayats80888
|
14.12.2019, 20:47
#11
|
0
|
0 / 0 / 0
Регистрация: 27.02.2016
Сообщений: 68
|
|
14.12.2019, 21:33 [ТС] | 12 |
вот весь main
работает, пока закоментировано //delete[] data; в деструкторе (при php.h которое в начале этой темы) int Max_size = 20;// int main() { setlocale(LC_ALL, "ru"); std::cout << "Hello World!\n"; char *d=nullptr; Set a = Set(Max_size, d); a = a + 'm' + 'p' + 'a' + 'd' + 'e' + 'x' + 'w'; a = a - 'M'; a = a - 'k'; a.Print(); Set b = Set(Max_size, d); b = b + 'a' + 't' + 'e' + 'm' + 'i'; b.Print(); Set c = Set(Max_size, d); c = c + 'm' + 'p' + 'a' + 'd' + 'e' + 'x' + 'w' + 'r'; c.Print(); c.extract(); c.Print(); if (a == b) cout << "yes, a = b" << endl; else cout << "a != b" << endl; if (a == c) cout << "yes, a = c" << endl; else cout << "a != c" << endl; if (a != b) cout << "yes, a != b" << endl; else cout << "a == b" << endl; if (a != c) cout << "yes, a != c" << endl; else cout << "a == c" << endl; Set Q = Set(Max_size, d); Set q2 = Set(Max_size, d); Q = Q + 'A' + 'B' + 'O' + 'R' + 'A' + 'B' + 'W' + 'I'; Q.Print(); Set q = Set(Max_size, d); q = q + 'O' + 'A' + 'R' + 'I' + 'W'; q.Print(); q2 = Q; q2.Print(); if (Q > q) cout << "подмножество q принадлежит Q" << endl; else cout << "НЕТ! подмножество q не принадлежит Q" << endl; Q.extract(); Q.Print(); if (Q > q) cout << "подмножество q принадлежит Q " << endl;//вызвать оператор проверки на подмножество else cout << "НЕТ! подмножество q не принадлежит Q" << endl; Q.extract(); Q.Print(); q.Print(); if (Q > q) cout << "подмножество q принадлежит Q " << endl;//вызвать оператор проверки на подмножество else cout << "НЕТ! подмножество q не принадлежит Q!" << endl; return 0; } Добавлено через 2 минуты да, "это попытка последовать совету из поста №5"
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
14.12.2019, 21:44 | 13 |
ну ясен пень, в чем смысл такого вызова?
Set a; удалить Добавлено через 6 минут Смысл maxsize я понял, только зачем тут динамический массив? Можно статическим обойтись
0
|
0 / 0 / 0
Регистрация: 27.02.2016
Сообщений: 68
|
||||||
14.12.2019, 21:51 [ТС] | 14 | |||||
а конструктор? туда что вставлять вместо char *D?
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|||||||||||
14.12.2019, 21:53 | 15 | ||||||||||
Сообщение было отмечено NNNNNNNNN как решение
Решение
исправил конструкторы под вашу задачу
1
|
0 / 0 / 0
Регистрация: 27.02.2016
Сообщений: 68
|
|
14.12.2019, 23:05 [ТС] | 16 |
) смысл? задание - сделать массив динамическим. преподаватель так придумал.
Добавлено через 23 минуты спасибо! теперь работает, пытаюсь понять где была проблема - можете намекнуть? если есть время, конечно. Но спасибо в любом случае! Добавлено через 46 минут стала искать определение двоеточия оно имеет название? где про это прочитать? это оно, нет? понять дико сложно, конечно... Stack overflow- "Область кода за двоеточием и до начала тела конструктора называется инициализатором конструктора. Используется как для инициализации членов класса, так и для вызова конструктора базового/базовых классов, т.е. по сути, инициализации базовой составляющей. Также здесь может быть вызов другого конструктора текущего класса (делегирование конструкторов, начиная с c++11)."
0
|
14.12.2019, 23:05 | |
14.12.2019, 23:05 | |
Помогаю со студенческими работами здесь
16
Выбрасывается исключение при выводе элементов массива Выбрасывается исключение при вводе названия фирмы Исключение повторно выбрасывается при завершении события DragDrop Ошибка при вызове деструктора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |