我在重载<<
输出操作符时遇到问题。该错误似乎不是重载本身,而是其中的实现,因为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();
以下是相关代码:
// 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();
}
Node::value_type LinkedList::getListData() {
for (current = head; current != NULL; current = current->getNext()) {
contents += current->getData() + " ";
}
return contents;
}
为什么我会收到这些错误?
答案 0 :(得分:1)
->
运算符的左手操作数既不是指针也不是具有重载->
运算符的类,则不能使用它。请尝试使用.
和list.value()
之类的list.getListData()
运算符。