打印功能 - Linked-List c ++

时间:2013-08-05 03:56:16

标签: c++ compiler-errors

我试图弄清楚我对这个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*);
};

3 个答案:

答案 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;