2011-11-01 92 views
0

我剛剛在C++中使用模板,並試圖通過模板列表進行迭代。無法遍歷模板列表C++

這裏是我的代碼

template <typename T> 
void pleaseWork(const list<T>& aList, list<T>& list1, list<T>& list2) 
{ 
typename list<T>::iterator i; 
int n = 0; 
for(i = aList.begin(); i != aList.end(); ++i) { 
     //Do something crazy 
     n++; 
} 

} 

int main() 
{ 
    list<int> lista; 
    list<int> list1; 
    list<int> list2; 
    for (int i = 0; i < 10; i++) { 
     lista.push_back(i*2); 
    } 

    pleaseWork(lista, list1, list2); 

return 0; 
} 

我編譯時出現以下錯誤: 錯誤:不對應的 '運營商=' 在i = ((const std::list<int, std::allocator<int> >*)aList)->std::list<_Tp, _Alloc>::begin與_TP = INT,_Alloc =標準::分配器」

感謝您的幫助

回答

1

aList是一個參考TO- const,所以begin()將返回const_iterator。如果你的編譯器支持它,則使用auto

+0

謝謝,我很感激。 – pulekies

0

由於您傳遞的是pleaseWorkconst列表的引用,因此您需要使用const_iterator來訪問其內容。