пользовательские свойства ребер в BGL

я начал использовать BGL для некоторых задач, связанных с графами. У меня много ребер, и каждое ребро имеет несколько свойств, одно из которых - его вес. (Все свойства являются числами с плавающей запятой и целыми числами). Поскольку я никогда раньше не работал с BGL (и / или подобными библиотеками CPP), я немного потерялся со всеми этими типами, классами и тем, как их правильно использовать.

Я добавляю ребра следующим образом:

struct EdgeProperty
{
    int weight;
    float e1;
    float e2;
};

typedef adjacency_list<vecS, vecS, bidirectionalS, no_property, EdgeProperty> Graph;
...
EdgeProperty prop;
node1 = ...;
node2 = ...;
prop.e1 = ...;
prop.e2 = ...;
prop.weight = ...;

add_edge(node1, node2, prop, g);

Затем мне нужно получить доступ к моему свойству позже, что я пытаюсь сделать вот так:

property_map<Graph, EdgeProperty>::type EdgeWeightMap = get(EdgeProperty, g);
w = get(EdgeWeightMap,some_edge);

Однако это даже не компилируется. В сообщении об ошибке говорится:

error: нет типа с именем «kind» в «struct EdgeProperty»

среди других ошибок, которые я сейчас считаю менее важными. Я не знаю, можно ли так использовать настраиваемые свойства. Не могли бы вы объяснить мне сообщение об ошибке вида и как использовать настраиваемые свойства? Я не смог найти никакой документации (насколько я понимаю) по этой теме.

5
задан janoliver 31 October 2011 в 10:58
поделиться