사용자 정의 Node
유형으로 boost::mutable_queue의 간단한 버전을 인스턴스화하려고합니다. 나는 다음 코드를 사용하여 mutable_queue<double>
인스턴스를 인스턴스화 아무런 문제가 없다 (표준 및 부스트 네임 스페이스를 사용하여, 필요한 모든 포함) : 그러나부스트 그래프 라이브러리 사용 : property_map in boost :: mutable_queue
int N = 100;
mutable_queue<double> *q =
new mutable_queue<double>(N, less<double>(), identity_property_map());
, 내가 (있는 내가 operator<
를 오버로드했습니다 Node
에 double
을 전환 할 때 및 operator==
), 더 이상 작동하지 않습니다.
error: no matching function for call to ‘boost::mutable_queue >, std::less, boost::identity_property_map>::push(Node*&)’ mutable_queue.h:100: note: candidates are: void boost::mutable_queue::push(const IndexedType&) [with IndexedType = UnitTest::Node_test()::entry_t, RandomAccessContainer = std::vector >, Comp = std::less, ID = boost::identity_property_map]
내 의심 나는 property_map
을 사용하는 방법을 이해하고 있지 않다이다 :
typedef Node entry_t;
typedef vector<entry_t> storage_t;
typedef less<entry_t> comp_t;
typedef identity_property_map prop_map_t;
//typedef iterator_property_map<storage_t,
// property_map<storage_t, entry_t>::type > prop_map_t;
typedef mutable_queue<entry_t, storage_t, comp_t, prop_map_t> queue_t;
queue_t *q = new queue_t(N, comp_t(), prop_map_t());
이이 라인을 따라 나에게 오류를 제공합니다 : 여기에 내가 노력하고있어 한 대표적인 예입니다. 누군가이 스 니펫을 수정하는 데 도움이 될 수 있으며 어째서해야 할 일이 적절한 지에 대한 설명을 줄 수 있습니까?