list<Book*> books;
list<Book>::iterator pos, last;
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;
}
void Administrator::printBookDetails()
{
books.begin()->setPrevBook(NULL);
for (pos = books.begin(); pos != books.end(); ++pos)
{
cout << pos->getTitle() << "\n"
<< pos->getAuthor() << "\n"
<< pos->getISBN() << "\n"
<< pos->getAvailability() << "\n"
<< "******************************" << endl;
if (pos != books.begin())
{
last->setNextBook(&*pos);
pos->setPrevBook(&*last);
}
last = pos;
}
books.back().setNextBook(NULL);
}
有人可以帮我完成这个项目,这些是我的两个功能addBook
和printbookDetails
。这些都在我的Admin类中。
我希望我在堆上创建的书籍存储在list< book*> books
中,因为我想在另一个类中引用它们。
到目前为止,关于指针,我已经得到了一些帮助,我知道它与我有关,而不是将指针链接到正确的对象。
我的printBookDetails
给了我麻烦,第一行books.begin()->setPrevBook(NULL);
说我需要一个指向类的指针,但是当我放->
时我仍然有错误。< / p>
Book Guest::searchBook(Book* search)
{
string searchBook;
cout << "What book would you like to search for?" << endl;
cin >> searchBook;
printBookDetails();
}
我喜欢做的就是使用我的Guest类上面的searchBook
函数来稍后引用列表中的书籍,但是当我无法正确指出我的指针时。
有人可以让我走上正轨。
答案 0 :(得分:2)
for (pos = books.begin(); pos != books.end(); ++pos)
这里,pos是一个迭代器,在你的列表上。迭代器就像列表条目的指针。
但是每个列表条目也是指向书籍的指针,而不是书本身。
因此,在尝试访问这些元素的成员函数时,您需要代码:(*pos)->getTitle()
。