Я знаю, что задал подобный вопрос некоторое время назад, но он все еще не работает. Извините за повторение. Я просто не знаю, почему это не работает. Я создал свой собственный связанный список (не используя библиотеку stl). У меня установлены мои классы и отлично работают, как я их тоже хочу. Проблема, с которой я сталкиваюсь, - вернуть ссылку, когда я использую функцию для заполнения списка. В моей главной функции я вызываю функцию bookSetUp()
, которая используется для заполнения списка. Я делаю эту функцию равной указателю temp. (Heres код)
main.cppОпределенный пользователем связанный список, возвращающий указатель от функции
Book* temp = bookSetUp();
while(temp!=NULL)
{
cout<<temp->getName()<<endl;
cout<<temp->getAuthor()<<endl;
cout<<temp->getISBN()<<endl;
temp = temp->getNext();
}
bookSetUp() находится в другом файле .cpp называется functions.cpp (ссылки работают между двумя .cpp-х годов, как я испытал их)
functions.cpp
Book* bookSetUp()
{
//The items that populate the list
Book a("A Tale of Two Cities", "Charles Dickens", 1203456, true);
Book b("Lord of the rings", "J.R.R Tolkein", 123456, true);
Book c("Le Petit Prince", "Antoine de Saint-Exupéry", 123457, true);
Book d("And Then There Were None", "Agatha Christie", 123458, true);
Book e("Dream of the Red Chamber","Cao Xueqin",123459, true);
Book f("The Hobbit","J.R.R Tolkein",123467, true);
a.setPrev(NULL);
a.setNext(&b);
b.setPrev(&a);
b.setNext(&c);
c.setPrev(&b);
c.setNext(&d);
d.setPrev(&c);
d.setNext(&e);
e.setPrev(&d);
e.setNext(&f);
f.setPrev(&e);
f.setNext(NULL);
Book* temp = &a;
return temp;
}
Как вы можете видеть Я пытаюсь вернуть указатель на первый элемент в списке, чтобы main имел к нему доступ. В моем классе книги есть атрибуты: имя строки, строковый автор, int isbn и bool.
Программа вылетает с «Необработанное исключение в 0x00B16886 в книгеRepository.exe: 0xC0000005: Место для обнаружения нарушения доступа 0xCCCCCD04»., который подразумевает, что это не возвращает значение из функции bookSetUp().
Также в отладчике int ISBN возвращается, но не строка (строки) или bool.
Кто-нибудь знает, почему это не работает? это было бы огромной помощью, если бы вы могли!
Спасибо за новичка: P Должен ли я заполнить книжный список в главном? или есть способ обойти это? @john –
@ Деннингтон-медведь Только что обновлено с этим. Короче используйте 'new'. – john
Я видел динамическое распределение до того, как его великий просто не понимал, что они разрушаются в конце функции. Спасибо –