错误 C2679:二进制“<<”:未找到采用“std::string”类型的右侧操作数的运算符

0 c++ operator-overloading

我有一个简单的书籍链接列表,我正在尝试使用此方法打印链接列表的内容

void List::display()const{

    Node *newNode = head;

    while (newNode != NULL){
        cout << "ID: " << newNode->book.getId() << " Name: " << newNode->book.getName()<< endl;
        newNode = newNode->next;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的Book班级有以下实现:

int Book::getId(){
    return id;
}

string Book::getName(){
    return name;
}
Run Code Online (Sandbox Code Playgroud)

Book.h具有以下声明:

class Book{
    friend class Node;
    friend ostream& operator<<(ostream& output, const Book &book);
public:
    Book();
    int getId();
    string getName();

private:
    int id;
    string name;
};
Run Code Online (Sandbox Code Playgroud)

让它打印ID这本书很好:

cout << "ID: " << newNode->book.getId()
Run Code Online (Sandbox Code Playgroud)

它的第二部分不起作用:

cout<<" Name: " << newNode->book.getName()<< endl;
Run Code Online (Sandbox Code Playgroud)

我之前在几个不同的链表中尝试过这个,它工作正常,但我不知道这里出了什么问题,

错误是:

错误 1 ​​错误 C2679:二进制“<<”:未找到采用“std::string”类型的右侧操作数的运算符(或没有可接受的转换)

Pau*_*zie 5

你可能忘记了:

#include <string>
Run Code Online (Sandbox Code Playgroud)