问题描述
我正在尝试在 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::