我有一个模板类,我想在 vector
中添加此类的实例,然后遍历该 vector
。
使用以下代码:
template <typename T>
class a { };
template <typename T>
void test(vector< a<T> >) {
vector< a<T> >::iterator it;
}
我得到错误:
In function ‘void test(std::vector<a<T>, std::allocator<a<T> > >)’:
error: expected `;' before ‘it’
我做错了什么?
最佳答案
你需要
typename vector< a<T> >::iterator it;
自 iterator
在此上下文中是从属名称。这意味着编译器无法知道 something<template parameter>::iterator
是否存在。是一种类型或其他东西。显式添加 typeneme
关键字解决了这个问题。
关于c++ - 无法创建模板 vector 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11918756/