今天遇到如下错误:
template<class T>
void exchange(list<T>& l1,list<T>::iterator p1, list<T>& l2,list<T>::iterator p2)
{
list<T> temp(p1, l1.end());
l1.erase(p1,l1.end());
l1.splice(l1.end(), l2,p2, l2.end());
l2.splice(l2.end(), temp,temp.begin(), temp.end());
};
编译器报错:list<T>::iterator p1依赖名称不是类型
解决方法是:提供typename声明,告诉编译器p1是一个类型.
template<class T> void exchange(list<T>& l1, typename list<T>::iterator p1, list<T>& l2,typename list<T>::iterator p2) { list<T> temp(p1, l1.end()); l1.erase(p1,l1.end()); l1.splice(l1.end(), l2,p2, l2.end()); l2.splice(l2.end(), temp,temp.begin(), temp.end()); };
问题解决.