在 .h 中提及它的同时在 .cpp 中定义 private class

Defining private class in .cpp while mentioning it in .h

.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' : an undefined class is not allowed as an argument to compiler intrinsic type trait '__is_empty'

Class用法是:

MonotonePieces mp(poly);

定义 std::set<int, CompEdges> _edgesCrossingLine 需要知道 CompEdges 的大小才能完整。所以你必须在这一行之前定义 CompEdges 。但是,您仍然可以自由地将 CompEdges 方法的实现放在 .cpp 文件中。