'&安培;'绑定成员函数表达式错误的非法操作

时间:2016-07-10 04:17:11

标签: c++

好的,这是我的代码:

#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;绑定成员函数表达式的非法操作 错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

&books.size不是有效的表达。

sizestd::vector的成员函数。要调用成员函数,您需要使用books.size()

该表达式中存在&会导致编译器认为您可能正在尝试获取指向该类的成员函数的指针,该指针可以使用&std::vector<Book>::size获得。但是,您无法使用类的对象获取指向类的成员函数的指针。这是消息 '&amp;'的翻译对绑定成员函数错误的非法操作 为普通英语。