我试图弄清楚我对这个printList函数做错了什么。我收到以下编译器错误:
无操作员“<<”匹配这些操作数。
功能如下:
void printList(const List& theList)
{
for(Node* i = theList.getFirst(); i != theList.getLast(); ++i)
{
cout << *i << " ";
cout << endl;
}
}
我也有以下内容,
#include "List.h"
#include <iostream>
我在想我的打印功能是偏离基础的。谁能指出我正确的方向?
这是我的课程,我没有List :: Iterator。你会建议什么?
class List
{
private:
int nodeListTotal;
Node* first;
Node* last;
public:
//Constructor
List();
void push_back(Node*);
void push_front(Node*);
Node* pop_back();
Node* pop_front();
Node* getFirst() const;
Node* getLast() const;
int getListLength() const;
void retrieve(int index, int& dataItem) const;
};
class Node
{
private:
string dataItem;
string dataUnit;
int unitTotal;
Node* next;
public:
//Constructor
Node();
Node(int, string, string);
string getDescription( );
void setDescription(string);
string getQuantityName();
void setQuantityName(string);
int getQuantityNumber();
void setQuantityNumber(int);
Node* getNext( );
void setNext(Node*);
};
答案 0 :(得分:1)
您需要为节点类型重载operator<<
:
std::ostream& operator<<(std:::ostream& os, const Node& node)
{
os << node.getQuantityName() << " " << node.getDescription();
return os;
}
答案 1 :(得分:0)
正如错误消息所示
No operator "<<" matches these operands.
你没有&lt;&lt;为您的班级定义的运算符。
答案 2 :(得分:0)
在printList()
功能中,将cout << *i << " ";
替换为
cout << i->getDescription() << endl;