天天看點

Missing 'typename' prior to dependent type name 'list<int>::iterator'

文章目錄

      • 1.在依賴類型"XXXX::XX"前缺少typename關鍵字
      • 2.例子

1.在依賴類型"XXXX::XX"前缺少typename關鍵字

  • 這個問題産生原因是編譯器不能識别"XXXX::XX"是個啥,這到底是個類型呢,還是類得靜态成員變量呢?
  • 解決方法也很簡單就是在"XXXX::XX"前面加上typename,告訴編譯器這是個類型。

2.例子

  • 這是我準備用模闆寫的一個複用list周遊,然後就報這個錯。
  • 報錯代碼:
#include <iostream>
#include <list>
using namespace std;

template <class T>

void showlist(list<T> v)
{
    for ( list<T>::iterator it = v.begin(); it != v.end(); it++)//報錯
    {
        cout << *it;
    }
    cout << endl;
}

int main()
{

    list<int> l1{ 1,2,3,4,5,5,6,7,7 };
    showlist(l1);
    list<double> l2;
    list<char> l3(10);
    list<int> l4(5, 10); //将元素都初始化為10
    showlist(l4);   
    return 0;
}
           
  • 改正代碼:
#include <iostream>
#include <list>
using namespace std;

template <class T>

void showlist(list<T> v)
{

    typename list<T>::iterator it;
    for ( it = v.begin(); it != v.end(); it++)
    {
        cout << *it;
    }
    cout << endl;
}

int main()
{

    list<int> l1{ 1,2,3,4,5,5,6,7,7 };
    showlist(l1);
    list<double> l2;
    list<char> l3(10);
    list<int> l4(5, 10); //将元素都初始化為10
    showlist(l4);
    return 0;
}
           

繼續閱讀