c++ - 无法创建模板 vector 迭代器

标签 c++ templates generics stl

我有一个模板类,我想在 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/

相关文章:

java - 在Java中,我可以继承由类型参数提供的类吗?

c++ - 参数包是模板参数吗?

c++ - C++ Xcode 无法识别 openpty()

c++ - 为什么只能在头文件中实现模板?

c++ - 为什么不为模板函数隐式调用运算符转换? (C++)

python - 如何在 Django 自定义身份验证后端中出现错误消息

c++ - 设置查找成员与使用列表查找

C++ vector std::bad_alloc 错误

c# - 如何获取 Dictionary<T, S> 中键的 ReadOnlyCollection<T>

Java 通用使用格式