Создание объектов в куче через функцию класса
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
класс, проблема у меня в том, когда я пытаюсь получить доступ к ним из другого класса, он говорит, что их там нет.
Я немного прочитал и понял, что должен распределять объекты в куче с помощью динамического управления памятью. Есть ли способ сделать это в моем коде?
Любая помощь будет принята с благодарностью.
3 ответа
Решение
Вот простой способ:
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;
}
Вы должны решить, хотите ли вы использовать book
который находится в вашем классе, или создайте другую книгу, или кучу копий вашей книги
если вы хотите другую книгу, вам нужно будет использовать new
оператор на старте
если вы хотите создать копию своей книги в куче:
return new Book(book)
Book* Administrator::addBook()
{
Book *bookOnHeap = new Book();
....
return bookOnHeap;
}