2014-02-21 3 views
0

У меня возникли проблемы с выполнением функции сравнения в двусвязном списке, цель которой - «проверьте, имеют ли два списка одну и ту же последовательность элементов. Два списка равны, если они имеют одинаковые количество элементов и элементов в соответствующей позиции равны » Кажется правильным, но я получаю ошибки, когда пытаюсь скомпилировать его. Вот код, используемый вместе с отдельным файлом заголовке, который описание:Функция сравнения в двусвязном списке

A header file List.h is provided, which contains the interfaces of the doubly-linked list class template List.

Вот моя функция сравнения:

template <typename T> 
bool operator==(const List<T> & lhs, const List<T> & rhs){ 
    if (lhs.theSize == rhs.theSize){ 
/*line345*/ for(List<T>::iterator itr = lhs.begin(), List<T>::iterator itr_2 = rhs.begin(); itr != lhs.end(); ++itr, ++itr_2){ 

      if(*itr != *itr_2) 
      return false; 
     } 
     return true; 
    } 
    else 
    return false; 
} 

Позвольте мне знать, если мне нужно предоставить больше кода. Мои ошибки:

List.cpp:345:35: error: expected ';' before 'itr' 
List.cpp:345:93: error: 'itr' was not declared in this scope 
List.cpp:345:120: error: 'itr_2' was not declared in this scope 
List.cpp:344:9: error: within this context 
List.cpp:345:91: error: dependent-name 'cop4530::List<T>::iterator' is parsed as a non-type, but instantiation yields a type 
+0

Возможный дубликат [Где и почему мне нужно поставить ключевые слова «шаблон» и «имя-тип»?] (Http://stackoverflow.com/questions/610245/where-and-why-do-i-have-to-put-the-template-and-typename-keywords) – erenon

ответ

0

Понадобится:

typename List<T>::iterator 

Поскольку итератор является зависимым именем. (Тип имени зависит от аргумента шаблона)

+0

Я думаю, что решил часть проблемы. Но я все еще получаю другие ошибки: List.cpp: 344: 9: error: в этом контексте List.cpp: 345: 60: ошибка: преобразование из âcop4530 :: List > :: const_iteratorâ to нескалярный тип âcop4530 :: Список > :: итератор запрошен List.cpp: 345: 108: ошибка: преобразование из âcop4530 :: List > :: const_iteratorâ к нескалярному type âcop4530 :: List > :: итератор запрошен List.cpp: 345: 108: error: не удалось преобразовать âitr_2â из âcop4530 :: List > :: iteratorâ to âboolâ –

Смежные вопросы