返回迭代器的开始指针时出错

问题描述

我正在尝试在 Ubuntu 18.04 (C++) 上编译 QSLIM 工具以简化网格 (http://mgarland.org/software/qslim.html),为此,我遵循 https://github.com/alecjacobson/qslim/issues/2 中的步骤。当我到达步骤时:

cd ../mixkit/
make -C src

我收到以下错误

 MxDynBlock.h:66:68: error: no matching function for call to ‘begin()’
 typename MxBlock<T>::const_iterator end() const { return begin()+size(); }

这里是类定义

include "MxBlock.h"
template<class T>
class MxDynBlock : public MxBlock<T>
{
    private:
        int fill;

    public:

        ...

        typename MxBlock<T>::iterator end()       { return begin()+size(); } //<=====
        typename MxBlock<T>::const_iterator end() const { return begin()+size(); }//<====

        void push_back(const T& t) { add(t); }
};

begin() 和 end() 两个函数在类 MxBlock 的包含文件“MxBlock.h”中定义如下:

template<classt>
class MxBlock {
private:
T*block;
protected:
//...
public:
iterator begin(){return block;}
const_iteraor begin() const {return block;}
iterator end(){return begin() + size;}
const_iterator end() const{return begin() + size;}
...//end of class MxBlock

有什么办法解决这个问题吗? 谢谢

解决方法

按照 Kao 在评论中的建议,我在 begin() 之前添加了 MxBlock::