c++ - 在 .h 中提及时在 .cpp 中定义私有(private)类

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

类的用法是:

MonotonePieces mp(poly);

最佳答案

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

关于c++ - 在 .h 中提及时在 .cpp 中定义私有(private)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31283029/

相关文章:

c++ - 将 Functor 转换为 Object of Type 函数

multithreading - Clang 线程安全注解和共享功能

c++ - 在 find_if 中使用仿函数

c++ - C++ 中的资源是什么?

c++ - 循环 C++ header 包括

c++ - 函数模板重载解析困惑

c++ - 使用矩阵到 PMG 的棋盘

c++ - 将 multimap 转换为一组集合

c++ - vector 复制值

c# - 如何通过将 Func 和 Action 作为参数的函数的两个重载来简化代码?