' - >'的基本操作数具有非指针类型

时间:2016-08-25 14:44:48

标签: c++ pointers linked-list

我在重载<<输出操作符时遇到问题。该错误似乎不是重载本身,而是其中的实现,因为value()函数发生了相同的错误。

错误(cygwin):

  

DeckOfCards.cpp:在函数std::ostream& deck::operator<<(std::ostream&, const deck::LinkedList&)中:
  DeckOfCards.cpp:81:20:错误:->的基本操作数有非指针   输入const deck::LinkedList

    return os << list->value();
           

DeckOfCards.cpp:在成员函数void deck::DeckOfCards::value(deck::LinkedList&)中:
  DeckOfCards.cpp:100:15:错误:->的基本操作数有非指针   输入deck::LinkedList

    cout << list->getListData();

以下是相关代码:

DeckOfCards.cpp

// overloaded cout operator                              
ostream& operator << (ostream& os, const LinkedList& list) {
    return os << list->value();
}


// returns all cards as a string
void DeckOfCards::value(LinkedList& list) {
    cout << list->getListData();
}

LinkedList.cpp

Node::value_type LinkedList::getListData() {
    for (current = head; current != NULL; current = current->getNext()) {
        contents += current->getData() + " ";
    }
    return contents;
}

为什么我会收到这些错误?

1 个答案:

答案 0 :(得分:1)

如果

->运算符的左手操作数既不是指针也不是具有重载->运算符的类,则不能使用它。请尝试使用.list.value()之类的list.getListData()运算符。