Написать связный список, каждый элемент которого хранит в себе ссылку на следующий полоучилось, а вот для хранения и следующего и предыдущего - нет. Выдает ошибку на 31-ой строке заголовочного файла.
Мог бы просто открыть интернет и найти код. Ты обращался к нулевому указателю first; не обнулял newtask->nextTask (как упомянуто выше); логика вывода неверная. Исправленный класс taskList:
if (last) last->nextTask = newtask; last = newtask;
if (!first) first = newtask; } void dispTask() { task* current = first; while(current) { cout << current->header << ":\n" << current->description << "\n" << "Task id: " << current->id << "\n"; current = current->nextTask; } } };
Способ добавления элементов неверный, у тебя будут указатели header и description у всех элементов указывать на одни и те же массивы, например такой код:
И ты наверно заметил, что Task id одинаковые, это потому что статические переменные общие для всех экземпляров класса. Ещё на каждый new должен быть delete. Советую перейти на современный С++.
Сообщение отредактировал Lertmind - Вторник, 20 Сентября 2016, 05:41
При правильном использовании ногу будет сложнее прострелить.
Т.е. Вы имеете ввиду, что класс "универсальный список на все случаи жизни" уже включен в "современные библиотеки" или на то, что есть какие-то современные нормы по работе с указателями? Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
Saitei, я этого не отрицал, но перейти всё равно советую. Gudleifr, про умные указатели и избавления от new и delete. nullptr - тоже важен. Там ещё были всякие удобства типа списка инициализации и enum class. Я знаю C++ плохо, так что не стоит воспринимать серьёзно