返回一个迭代器

Avi*_*djo 0 c++ iterator

我如何返回迭代器表单函数:

我滔滔不绝地说:...

template<class S,class T> class Database {
public:
.
..
 map<S,Node<T>*> m_map::iterator Find (S keyToFind);
.
..
....


private:
.
..
 map<S,Node<T>*> m_map;
..
.
};

.
..
template<class S,class T>
map<S,Node<T>*> m_map::iterator Find (S keyToFind) {
 map<S,Node<T>*>::iterator itMap;
 itMap = m_map.find(KeyToUpDate);
 return itMap;
}
..
.
Run Code Online (Sandbox Code Playgroud)

有很多错误,因为:错误1错误C2653:'m_map':不是类或命名空间名称错误2错误C2146:语法错误:缺少';' 在标识符"查找"之前错误3错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-错误5错误C2653:'m_map':不是类或命名空间名称错误7错误C2133:'iterator':未知大小.. ...

我不明白是什么问题..

GMa*_*ckG 6

看起来你想要:

typename map<S,Node<T>*>::iterator
Run Code Online (Sandbox Code Playgroud)

你应该真的使用typedef来清理这些东西:

template<class S, class T>
class Database
{
public:
    // I hope you have't put `using namespace std;` in a header...
    typedef std::map<S, Node<T>*> map_type;
    typedef typename map_type::iterator iterator;
    // etc...

    // use references to avoid copying
    iterator Find (const S& keyToFind);
private:
    map_type m_map;
};
Run Code Online (Sandbox Code Playgroud)