2009-08-13 5 views
0

J'essaye d'instancier une version simple de boost::mutable_queue avec un type personnalisé Node que j'ai défini. Je n'ai pas du mal à instancier une instance mutable_queue<double> en utilisant l'extrait suivant (en utilisant les espaces de noms std et stimuler, et tout besoin Includes):Utilisation de Boost Graph Library: property_map dans boost :: mutable_queue

int N = 100; 

mutable_queue<double> *q = 
    new mutable_queue<double>(N, less<double>(), identity_property_map()); 

Cependant, lorsque je tente de passer double-Node (pour lequel je suis surchargée operator< et operator==), je ne suis plus capable de le faire fonctionner. Voici un exemple représentatif de ce que je suis en train:

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()); 

Cela me donne des erreurs le long de ces lignes:

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]

Je soupçonne que je ne comprends pas comment utiliser property_map. Est-ce que quelqu'un pourrait m'aider à corriger cet extrait, et peut-être expliquer pourquoi c'est la bonne chose à faire?

Répondre

1

Je ne vois pas où vous appelez pousser, mais il semble que vous poussez un nœud * lorsque vous devez pousser un nœud:

::push(Node*&) 

il vous dit qu'il ya un coup de pouce pour le nœud const &:

push(const IndexedType&) 

où IndexedType = Noeud

Questions connexes