私が定義したカスタムNode
タイプのboost::mutable_queueの簡単なバージョンをインスタンス化しようとしています。私は、次のスニペットを使用してmutable_queue<double>
インスタンスをインスタンス化に支障がない(STDとブースト名前空間を使用して、必要なすべてが含まれます):しかしブーストグラフライブラリを使用する:boost :: mutable_queueのproperty_map
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());
これは、これらの線に沿って私にエラーを与える:ここで私がしようとしているものの代表的な一例です。誰かがこのスニペットを修正するのを手伝ってもらえますか、なぜそれが正しいことなのか少し説明してください。