无法将模板参数传递给 std::list:<T>:迭代器
Cannot pass template argument to std::list<T>::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_;
做错了什么?为什么这应该是一个语法错误?
根据@ songyuananyao的建议,解决方案是将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++模板typename iterator
相关文章:
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- C++中带有List类的迭代器Segfault
- 使用"std::unordereded_map"映射到"std::list"对象
- 呼叫运营商<<临时
- GCC对可能有效的代码抛出init list生存期警告
- 使用std::list创建循环链表
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 重载Singly Linked List中的赋值运算符
- <<操作员在下面的行中工作
- '[](std::list& list)<int>{return std::move(list)}(list)' 是否保证将 'list' 留空?
- 如果 KEY 是 std::list 或 std::vector 而不是值,那么 std::map 的默认行为是什么?
- 为什么这个 std::queue/指向结构的指针列表直到 List.Size() == 0 才释放内存?
- "std::list::splice(std::const_iterator pos, std::list&& other)"是否保证将"其他"留空?
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 在修改列表后,std :: list&lt; t&gt; :: end()的值是否会更改