所以我有一个名为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的两行中。我有地图和清单,包括在内。我不知道为什么,我也不明白错误。我究竟做错了什么?

最佳答案

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”的另一个示例)

关于c++ - 从函数返回迭代器给我一个奇怪的错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20079836/

10-13 09:27