Yan*_*ann 0 c++ templates iterator c++11
我正在写一个模板化的类,它涉及使用迭代器.我已经找到了很多关于你如何使用模板来键入迭代器的问题,所以我想知道它为什么还没有用.
#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);
};
Run Code Online (Sandbox Code Playgroud)
我也试过typedef typename std::list<T>::iterator iter;,但是引发错误"std :: list :: iterator不是一个类型"
所以鉴于我正在使用typename,我做错了什么?
我正在使用带有参数-std = c ++ 0x的g ++ 4.4.5,如果它是相关的.
你想要一个typedef(现在你声明一个名为的对象iter):
typedef typename std::list<T>::iterator iter;
Run Code Online (Sandbox Code Playgroud)
此外,您需要typename在声明中binarySearch:
iter binarySearch(T toFind, typename std::list<T>::iterator min, typename std::list<T>::iterator max);
Run Code Online (Sandbox Code Playgroud)
当然,你可以iter在这一点上使用:
iter binarySearch(T toFind, iter min, iter max);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
581 次 |
| 最近记录: |