【发布时间】:2015-04-01 08:53:53
【问题描述】:
我正在编写一个模板类,其中涉及到迭代器的使用。如果您将迭代器与模板一起使用,我发现了很多关于如何对迭代器进行类型命名的问题,所以我想知道为什么它仍然无法正常工作。
#pragma once
#include <iterator>
#include <list>
#include <tuple>
template <class T>
class Quack
{
private:
std::list<T> data;
typename std::list<T>::iterator iter;
public:
Quack();
void insert(T dat);
std::tuple<T, T> poppop();
private:
//error: 'iter' does not name a type
iter binarySearch(T toFind, std::list<T>::iterator min, std::list<T>::iterator max);
};
我也尝试过typedef typename std::list<T>::iterator iter;,但是会抛出错误“std::list::iterator is not a type”
鉴于我使用的是typename,我做错了什么?
如果相关,我正在使用带有参数 -std=c++0x 的 g++ 4.4.5。
【问题讨论】:
标签: c++ templates c++11 iterator