Я пытаюсь написать перегрузку оператора для связанного списка, который будет занимать правую часть + и объединить этот список в список слева.Оператор 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;
}
Driver:
mylist + mylist2; //both list objects already created.
Сообщение об ошибке:
Error: The operation "List<std::string>* + List<std::string>*" is illegal.
Я не уверен, почему я получаю ошибку времени компиляции. Моя логика состоит в том, чтобы взять каждый элемент списка с правой стороны и просто нажать его в конец списка слева. Мысли?
Если вы хотите объединиться с существующим списком, было бы более полезно перегрузить '+ ='. Оператор '+' должен возвращать новый список. Но у вас две большие ошибки: вы возвращаете ссылку на локальную переменную, и, похоже, вы пытаетесь добавить два указателя. – juanchopanza
Судя по сообщению об ошибке, 'mylist1' и' mylist2' не являются 'List', это указатели. И вы не можете добавить указатели. – molbdnilo