Book book;
list<Book>* books;
string title;
string author;
int ISBN;
Book* Administrator::addBook()
{
Book *newBook = new Book();
cout << "Would you like to enter a book?" << endl;
cin >> userInput;
cout << endl;
if (userInput == "yes")
{
cout << "What is the title of the book you want to enter?" << endl;
cin >> title;
cout << "What is the author of the book you want to enter?" << endl;
cin >> author;
cout << "What is the ISBN of the book you want to enter?" << endl;
cin >> ISBN;
cout << endl;
newBook->setTitle(title);
newBook->setAuthor(author);
newBook->setISBN(ISBN);
newBook->setAvailability(true);
books->push_back(*newBook);
}
return newBook;
}
Здесь я создаю свои объекты книги в своем классе Administration
, проблема, с которой я сталкиваюсь, - это когда я пытаюсь получить доступ к ним из другого класса, и говорит, что их нет.
Я немного почитал и понял, что я должен выделить объекты в кучу, используя динамическое управление памятью, есть ли способ сделать это в моем коде?
Любая помощь будет очень оценена.
Вот простой способ:
if (userInput == "yes")
{
Book *newBook = new Book(); // <-- allocates a Book object on the heap
cout << "What is the title of the book you want to enter?" << endl;
[...]
newBook->setTitle(title);
[...]
return *newBook;
}
list<Book> books
указателем, чтобы хранить все мои книги, но я теперь получаю доступ к нарушению места чтения. Я обновил код до того, что у меня есть сейчас, вы знаете, почему это может быть?
list<Book*> books
, а не list<Book> *books
. Два не одинаковы. Вы получаете нарушение прав доступа, потому что books
- это указатель, а вы его не выделяете. С другой стороны, вы отбрасываете выделенную кучу Book *
и назначаете ее экземпляру, выделенному как часть списка.
вам нужно решить, хотите ли вы использовать book
которая находится в вашем классе, или создать другую книгу или кучную копию вашей книги
если вам нужна другая книга, вам нужно будет использовать new
оператора в начале
если вы хотите создать копию своей книги в куче:
return new Book(book)
Book* Administrator::addBook()
{
Book *bookOnHeap = new Book();
....
return bookOnHeap;
}
return bookOnHeap;
нет?