从函数返回迭代器给我一个奇怪的错误

时间:2013-11-19 19:01:28

标签: c++ stl iterator

所以我的类名为Client,它包含一个字符串列表。我想要一个方法在开始时获取迭代器,在另一端获取另一个迭代器。所以我有以下代码:

iterator Client::getGustBegin() const { return _gustos.begin(); }
iterator Client::getGustEnd() const { return _gustos.end(); }

在Client.h中就是这样:

    iterator getGustBegin() const;
    iterator getGustEnd() const;

此外_gustos声明如下:

list<string> _gustos;

我正在使用g ++编译器,它向我显示了这个错误:

error: invalid use of template-name 'std::iterator' without an argument list

在Client.h中的两行中。我有地图和列表包括。我不知道为什么,我不明白这个错误。我做错了什么?

1 个答案:

答案 0 :(得分:1)

typedef通常是件好事:

class Client
{
   public:
   typedef std::list<std::string>::iterator gust_iterator;
   gust_iterator getGustBegin() const;
};


inline Client::gust_iterator Client::getGustBegin() const {
   return _gustos.begin();
}

在你的情况下(如已经指出的那样)迭代器引用了std :: iterator。 (因此,您提供了另一个避免'使用nmaespace std'的例子)