2011-01-26 6 views
2

J'ai créé une structure et l'a utilisée comme paramètre de modèle pour adjacency_list. Cependant, lorsque j'essaie d'ajouter add_edge (vertex1, vertex2, property, graph), le compilateur se plaint de "pas d'appel de fonction correspondant". Quelqu'un peut-il voir où je me suis trompé ici?BGL Propriétés groupées add_edge "aucune fonction correspondante"

#include <iostream> 
#include <boost/graph/adjacency_list.hpp> 

// Create a struct to hold several properties 
struct MyProperty 
{ 
    int MyIntProperty; 
}; 

// Define the type of the graph 
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, MyProperty> Graph; 

int main(int,char*[]) 
{ 
    // Create a graph object 
    Graph g(2); 

    // Add an edge between node 0 and node 1 with weight 1.2 
    MyProperty p; 
    p.MyIntProperty = 5; 
    std::cout << p.MyIntProperty << std::endl; 
    add_edge(0, 1, p, g); 

    return 0; 
} 

Merci,

David

Répondre

4

Dans ce code, MyProperty est déclarée comme une propriété de sommet plutôt que d'une propriété de bord, et il n'a pas de sens d'insérer des bords avec cette propriété. Essayez d'ajouter boost::no_property avant MyProperty dans votre adjacency_list typedef.

Questions connexes