在.hpp中定义私有类,同时在.h中提及它

时间:2015-07-08 03:28:18

标签: c++ stl functor private-members

·H

class MonotonePieces
{
    ...
private:
    class CompEdges;
    set<int, CompEdges> _edgesCrossingLine;
};

的.cpp

class MonotonePieces::CompEdges
{
    ...
};

MonotonePieces::MonotonePieces(const vector<Vector2>& vertices) : 
    _edgesCrossingLine((CompEdges(_vertices, &this->_sweepingLinePosition))),
{}

有了这个我得到错误:

  

'MonotonePieces :: CompEdges':不允许使用未定义的类作为   编译器内在类型特征'__is_empty'

的参数

课程用法是:

MonotonePieces mp(poly);

1 个答案:

答案 0 :(得分:3)

定义std::set<int, CompEdges> _edgesCrossingLine需要知道要完成CompEdges的大小。因此,您必须在此行之前定义CompEdges。但是,您仍然可以将CompEdges方法的实现放在.cpp文件中。