我正在尝试使用 boost 迭代器适配器为 CArray MFC 类编写一个简单的 STL 迭代器。这是我的代码:
#include <boost/iterator/iterator_adaptor.hpp>
#include <afxtempl.h>
class CArrIter : public boost::iterator_adaptor< CArrIter ,
int,
int,
boost::random_access_traversal_tag >
{
public:
CArrIter(CArray<int,int>& arr, int index = 0) : m_arr(arr)
{
this->base_reference() = index;
}
private:
friend class boost::iterator_core_access;
int dereference() const{
return m_arr.GetAt(base());
}
private:
CArray<int,int>& m_arr;
};
使用 VC9 编译器可以很好地编译。但是当我尝试用 VC7 编译它时,我得到以下错误:
\include\boost\iterator\iterator_traits.hpp(49) : erro r C2039: 'difference_type' : is not a member of 'boost::detail::iterator_traits< Iterator>' with [ Iterator=int ]
\include\boost\mpl\eval_if.hpp(41) :参见使用 [ Iterator=int ] 编译的类模板实例化 'boost::iterator_difference' 的参考
.... 多一点 ....
有什么线索可能是错的吗?我必须包含其他一些头文件?我对提升图书馆很陌生。