我正在写一个模板类,它涉及迭代器的使用。我发现了很多关于如何使用模板来键入迭代器的问题,所以我想知道为什么它仍然不起作用。typenamed迭代器不是一个类型
#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 ::目录:: iterator是不是一个类型的”
所以给我使用typename
,它是什么,我米做错了吗?
我使用g ++ 4.4.5和参数-std = C++ 0x,如果它是相关的。
我刚刚意识到我没有没有使用typedef的权利。然而,当我使用typedef时,我仍然遇到错误,就像我提出的问题一样。 – Yann 2015-04-01 08:59:01
@Yann,是的,更新了。 – jrok 2015-04-01 08:59:54