2011-11-01 125 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来访问其内容。