在 .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 文件中。
.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 文件中。