无法将模板参数传递给std :: list <t> :: iterator

时间:2016-06-29 10:51:59

标签: c++ templates visual-c++ iterator

我制作了一个容器模板类,如下所示:

template<typename K, typename V>
class hash_table {
 public:
  class iterator {
   private:
    list<V> list_;                 // Works well
    list<V>::iterator it_;         // Fails: Syntax-error "iterator"
    list<int>::iterator it2_;      // Works well
  };
//....
}

有人可以告诉我,我在list<V>::iterator it_;做错了什么吗?为什么这是语法错误?

1 个答案:

答案 0 :(得分:1)

@songyuanyao sugested,解决方案是将typename放在list<V>::iterator之前,如:

template<typename K, typename V>
class hash_table {
 public:
  class iterator {
   private:
    list<V> list_;                 // Works well
    typename list<V>::iterator it_;         // No more fails
    list<int>::iterator it2_;      // Works well
  };
//....
}

另见: C++ template typename iterator