我正在寫一個模板類,它涉及迭代器的使用。我發現了很多關於如何使用模板來鍵入迭代器的問題,所以我想知道爲什麼它仍然不起作用。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