Это хорошая иллюстрация того, почему важно включить пример complete , а также прочитать все сообщения об ошибках.В вашем коде отсутствуют некоторые заголовки;как минимум, в верхней части нужно следующее:
#include<list>
#include<iostream>
using namespace std;
Когда я исправляю их и добавляю отсутствующий }
в конце и компилирую, я получаю три ошибки:
foo.cpp:14:9: error: need 'typename' before 'mySTLlist<T>::iterator' because
'mySTLlist<T>' is a dependent scope
foo.cpp:14:32: error: expected ';' before 'i'
foo.cpp:14:49: error: 'i' was not declared in this scope
Первый говорит, что нам нужно добавить «typename» (обратите внимание, что это в кавычках, что означает буквальное ключевое слово typename
, а не имя типа), поэтому мы добавляем именно то, что нам нужно, изменяяэта строка в:
for(typename mySTLlist<T>::iterator i = lst.begin(); i != lst.end(); i++)
Это решает проблему.Ошибка, которую вы видите, является последующей ошибкой - поскольку объявление i
было ошибочным, оно пропустило его, чтобы посмотреть, что оно может сделать с остальной частью файла.В следующий раз, когда вы используете i
, он жалуется, что он не был объявлен (что, конечно, потому что пропустило объявление) - и, аналогично, пропущенная ошибка ;
вызвана тем, как он пропускаетта первая ошибка.Итак, исправьте проблему first , и это исправит все остальное.