Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2022, 11:24   #1
alex_titanic
Пользователь
 
Регистрация: 16.06.2022
Сообщений: 16
По умолчанию проблема при создании "кольца "объектов

#include <iostream>
using namespace std;
const int n = 4;
class MyClass {
private:
char code;
public :
MyClass* next;

~MyClass() {
cout << "Object was deleted " << code<<endl ;
}
void show() {
int i = 10;
while (i > 0) {
cout << code << " ";
if (next) {
next->show();
}i--;
}
}
void Set(char slovo) {
code = slovo;(тут какое-то исключение вызывается , нарушение прав доступа)!!!

}
char Get() {
return code;
}


};
void deleteAll(MyClass* q) {
int i = 10;
while (i > 0) {
if (q->next) {
deleteAll(q->next);
}
delete q;
i--;
}
}

int main() {

MyClass* pnt = new MyClass;
pnt->next->Set('A');
MyClass *p;

p = pnt;




for (int i = 0; i < n; i++) {
p->next = new MyClass;
p->next->Set(p->Get() + 1);
p = p->next;
}
p->next = pnt;




pnt->show();
cout << endl;

deleteAll(pnt);





return 0;
}

как было указано выше, вызывается исключение , по идее у меня должна быть цепочка объектов , где каждый ссылается на последующий , а последний на первый . что-то вроде кольца , но когда я вывожу на экран в консоли свои объекты , там выводится много циклов подряд типо A B C D .... К и так несколько раз подряд . причем сообщения о том что объекты были удалены вовсе не выводится . был бы очень признателен если бы помогли с этим разобраться
alex_titanic вне форума Ответить с цитированием
Старый 27.07.2022, 11:33   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
MyClass* pnt = new MyClass;
pnt->next->Set('A');
У вас pnt->next не иициализирован.

Зачем вам i и цикл по ней в функциях? Лучше почитайте как устроен линеный список и как с ним работают.
p51x вне форума Ответить с цитированием
Старый 27.07.2022, 11:57   #3
alex_titanic
Пользователь
 
Регистрация: 16.06.2022
Сообщений: 16
По умолчанию

просто до списков еще не дошел
alex_titanic вне форума Ответить с цитированием
Старый 27.07.2022, 11:59   #4
alex_titanic
Пользователь
 
Регистрация: 16.06.2022
Сообщений: 16
По умолчанию

p51x, как его можно инициализировать?
alex_titanic вне форума Ответить с цитированием
Старый 27.07.2022, 11:59   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А что вы тогда делаете? Берите массив, вектор, ... если до списков еще не дошли.

Цитата:
Сообщение от alex_titanic Посмотреть сообщение
p51x, как его можно инициализировать?
А в цикле потом вы что делаете? Или просто пишите код наугад?
p51x вне форума Ответить с цитированием
Старый 27.07.2022, 12:00   #6
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Или доходите скорее до списков. А то вы еще не дошли, но во всю пользуетесь.
macomics вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо написать "таймер", который будет запускаться при нажатии кнопки "Start", приостанавливаться на "Pause", и сбрасываться на "Reset" billiejean78 JavaScript, Ajax 1 03.09.2021 08:58
Нужно добавить окно выхода из программы с кнопками "Да" и "Нет". По кнопке "Нет" окно не закрывается. В чем проблема? Sergio7 Паскаль, Turbo Pascal, PascalABC.NET 12 01.05.2020 06:17
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 12:53
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
"Проблема" при создании компонентов в run-time HyperZen Общие вопросы Delphi 2 16.06.2011 14:58