要在泛型函数

时间:2016-09-08 12:08:13

标签: c++ stl

这是代码,我试图使用STL列表模拟Queue,类是

template <class T>
class myqueue{
    list<T> m;
public:
    void enqueue(T item);
    T dequeue();
    void display();
};

这是display function的实现,我希望使用迭代器显示列表m的内容。

template <class T>
void myqueue<T>::display(){
    // list<T>::iterator it;
    for (auto it = m.begin(); it < m.end(); it++)
    std::cout << *it;
}

我不断收到错误需要帮助,这已经解决我应该在For循环中使用!=而不是<

编辑:

template <class T>
void myqueue<T>::display() {
   // list<T>::iterator it;
    for (list<T>::iterator it = m.begin(); it < m.end(); it++)
    std::cout << *it;
}

我收到错误

"31:13: error: need 'typename' before 'std::list<T>::iterator' because 'std::list<T>' is a dependent scope"

如果我使用关键字auto,它可以正常工作。它背后的原因是什么?

1 个答案:

答案 0 :(得分:0)

unique_ptr

应该是

for(auto it = m.begin();it<m.end();it++)

或简单地说:

for (auto it = m.begin(); it != m.end(); it++)