首页 > 解决方案 > 如何从函数/方法返回迭代器?

问题描述

我试图了解迭代器如何成为返回类型,但我无法这样做。我知道在类集中,该find()方法返回一个迭代器,但是当我将集类封装在包装Set类中时,我无法返回迭代器。为什么会这样?

Body of Set class
...
typedef typename set<T>::iterator SetIterator; //No issue
SetIterator Find(T data); //No issue
...

Implementation
...
template <class T>
SetIterator Set<T>::Find(T data) //SetIterator does not name a type error message
{
    SetIterator i = dataSet.find(data);
    return i;
}

谁能解释我做错了什么?

标签: c++iteratorset

解决方案


提供程序应采用“SetIterator”名称的范围。MyClass<T>::SetIterator

#include <set>
using namespace std;

template<typename T>
class MyClass {
   typedef typename set<T>::iterator SetIterator;
   SetIterator Find(T data);
private:
   set<T> dataSet;
};

template<typename T>
MyClass<T>::SetIterator MyClass<T>::Find(T data)
{
   SetIterator i = dataSet.find(data);
   return i;
}

推荐阅读