相关疑难解决方法(0)

如何使用两个函数,一个返回迭代器,另一个返回const_iterator

所以我有一个名为find的函数,它有两个版本:

template <typename T> 
typename btree<T>::iterator btree<T>::find(const T& elem)
{
    //Implementation
}
Run Code Online (Sandbox Code Playgroud)

另一个是const_iterator版本:

template <typename T> 
typename btree<T>::const_iterator btree<T>::find(const T& elem) const
{
    //Implementation
}
Run Code Online (Sandbox Code Playgroud)

在我的测试文件中,当我这样做

btree<char>::iterator it = myTree.find('M');
Run Code Online (Sandbox Code Playgroud)

一切正常,但是当我使用const_iterator版本时:

btree<char>::const_iterator it = myTree.find('M');
Run Code Online (Sandbox Code Playgroud)

它给了我错误

错误:从'btree_iterator'转换为请求的非标量类型'const_btree_iterator'

这显然意味着find只使用迭代器(非const)版本.我知道C++应该const_iterator自动调用版本 - 如果我做的一切正确的话.所以问题是,我可能做错了什么?

迭代器类是:

class btree_iteratorclass const_btree_iterator这只是一个复制粘贴btree_iterator改变与名

以下是完整的源代码:
btree_iterator.h(包括const_btree_iterator)http://pastebin.com/zQnj9DxA
btree.h http://pastebin.com/9U5AXmtV
btree.tem http://pastebin.com/U9uV3uXj

c++ iterator compiler-errors const

7
推荐指数
2
解决办法
599
查看次数

标签 统计

c++ ×1

compiler-errors ×1

const ×1

iterator ×1