2015-07-08 2 views
1

.hОпределение частного класса в .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'

Использование класса:

MonotonePieces mp(poly); 
+1

Лучше придумать другое решение, отличное от std :: set, или вы можете использовать указатель на реализацию идиомы для перемещения std :: set в cpp. – user2883715

ответ

3

Определение std::set<int, CompEdges> _edgesCrossingLine должно быть известно, размер CompEdges будет заполнен. Поэтому перед этой строкой вы должны определить CompEdges. Тем не менее, вы по-прежнему можете поместить реализацию методов CompEdges в файл .cpp.

Смежные вопросы