error: expected `;’ before ‘itr’

template <class T> // or template <typename T>
class A
{
   public:

      A() {}
      ~A() {}

      void aaa()
      {
         std::list<T> aList;

         ...

         std::list<T>::iterator itr = aList.begin();
         for( ; itr != aList.end(); ++itr ) { ... }
      }
};

이와 같은 경우 다음과 같은 error가 발생할 수 있다.

error: expected `;’ before ‘itr’

모호한 data type으로 인해 발생하는 error이며,
해결책은…

std::list<T>::iterator itr = aList.begin();

를 다음과 같이 바꾸어 주면 된다.

class std::list<T>::iterator itr = aList.begin();

또는

typename std::list<T>::iterator itr = aList.begin();

Add a Comment