我想寫一個鏈接列表的操作符重載,它將採取+的右側,並將該鏈接列表連接到左側的列表。C++運算符+過載單鏈表
類聲明:
List<T>& operator+(const List<T>& right);
方法:
template <typename T>
List<T>& List<T>::operator+(const List<T>& right){
List result(*this);
while(right->next != NULL){
result->push_back(right->data);
}
return list;
}
司機:
mylist + mylist2; //both list objects already created.
錯誤消息:
Error: The operation "List<std::string>* + List<std::string>*" is illegal.
我不確定爲什麼我會收到編譯時錯誤。我的邏輯是將列表中的每個元素放在右側,並將其推到左側列表的後面。思考?
如果你想連接到一個現有的列表,重載'+ ='會更有意義。 '+'運算符應該返回一個新的列表。但是你有兩個大錯誤:你返回一個局部變量的引用,而你似乎試圖添加兩個指針。 – juanchopanza
根據錯誤信息判斷,「mylist1」和「mylist2」不是「List」,它們是指針。你不能添加指針。 – molbdnilo