好的,这是我的代码:
#include "driver.h"
#include "stdafx.h"
#include "Book.h"
#include "Author.h"
#include <vector>
void displayBooks(const vector<Book>& books)
{
// students need to write the code for this function
for (int i = 0; i < &books.size; i++)
{
std::cout << &books[i] << std::endl;
}
}
int main()
{
// create a vector for storing the account objects
vector<Book> myBooks;
// create three Author objects
Author p1("J.K.Rowling", "Edinburgh, Scotland");
Author p2("Suzanne Collins", "Connecticut, USA");
Author p3("J.R.R. Tolkien", "Bournmouth, England");
// Create three Book objects
Book b1(p1, "Harry Potter and the Sorcerer's Stone", 256, 24.95);
Book b2(p2, "Mockingjay", 400, 12.99);
Book b3(p3, "The Hobbit", 322, 14.29);
// add the books to the vector
myBooks.push_back(b1);
myBooks.push_back(b2);
myBooks.push_back(b3);
// call the displayBooks function to display the books
displayBooks(myBooks);
cout << "\n\n";
system("PAUSE");
return 0;
}
最重要的部分是导致我麻烦的,即displayBooks功能。我一直在接受 &#39;&安培;&#39;绑定成员函数表达式的非法操作 错误。我该如何解决这个问题?
答案 0 :(得分:3)
&books.size
不是有效的表达。
size
是std::vector
的成员函数。要调用成员函数,您需要使用books.size()
。
该表达式中存在&
会导致编译器认为您可能正在尝试获取指向该类的成员函数的指针,该指针可以使用&std::vector<Book>::size
获得。但是,您无法使用类的对象获取指向类的成员函数的指针。这是消息 '&amp;'的翻译对绑定成员函数错误的非法操作 为普通英语。