Я получаю некоторые ошибки, которые я не знаю, как исправить.Кажется, у меня возникают проблемы с правильной передачей моих параметров в функцию-член класса в List.h.Как я могу это исправить?Ограничения: я не могу изменить параметры или тип возвращаемого значения is_equal.
Demo.cpp:60:38: error: no matching function for call to ‘List<std::__cxx11::basic_string<char> >::is_equal(List<std::__cxx11::basic_string<char> >*&)’
bool random = list2->is_equal(list3);
^
In file included from Demo.cpp:1:
List.h:339:8: note: candidate: ‘bool List<T>::is_equal(const List<T>&) const [with T = std::__cxx11::basic_string<char>]’
bool is_equal(const List<T> &other) const
^~~~~~~~
List.h:339:8: note: no known conversion for argument 1 from ‘List<std::__cxx11::basic_string<char> >*’ to ‘const List<std::__cxx11::basic_string<char> >&’
Мой код для вызова is_equal в Demo.cpp:
List<string> *list2 = new List<string>();
List<string> *list3 = new List<string>();
// code to add values to list2 and list3
bool random = list2->is_equal(list3); // line 60
Функция is_equal в List.h:
/**
* description: returns true if calling List and parameter
* List other contain exactly the same sequence of values.
* Returns false otherwise.
*
* REQUIRMENT: Linear runtime (O(n) where n is MIN(len1,len2)
* and len1 and len2 are the respective lengths of the two lists.
**/
bool is_equal(const List<T> &other) const // line 339
{
Node *p = front;
int pLength = 0;
int otherLength = 0;
while (p != nullptr) {
pLen++;
p = p->next;
}
while (other != nullptr) {
otherLen++;
other = other->next;
}
if (pLen == otherLen)
return true;
return false;
}