2009-08-13 3 views
0

사용자 정의 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<를 오버로드했습니다 Nodedouble을 전환 할 때 및 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()); 

이이 라인을 따라 나에게 오류를 제공합니다 : 여기에 내가 노력하고있어 한 대표적인 예입니다. 누군가이 스 니펫을 수정하는 데 도움이 될 수 있으며 어째서해야 할 일이 적절한 지에 대한 설명을 줄 수 있습니까?

답변

1

당신이 푸시를 호출하고 어디는 표시되지 않습니다,하지만 당신이 노드를 추진하고있는 것으로 보인다 * 당신은 노드 추진되어야 할 때 : 당신을 말하고

::push(Node*&) 

노드에 대한 푸시 거기를 const를 & :

push(const IndexedType&) 

IndexedType = 노드

관련 문제