2016-03-23 4 views
1
typedef boost::adjacency_list< 
    boost::vecS, boost::vecS, boost::directedS, NodeInfo, EdgeInfo> Graph; 

    Graph g(10); 
    EdgeInfo be; 
    add_edge(0,1,be,g); 

Fehler: Verwendung von gelöschten Funktion ‚boost :: Details :: stored_edge_propertyErhöhung Directed Graph - add_edge - stored_edge_property

ändern "ungerichtete" auf "gerichtet" verursacht Fehler unter Linux (gcc/4.9.2) während kompiliert gut auf Windows Visual Studio Express 2013. Boost: 1.59.0.

Der Täter scheint add_edge

Gibt es eine schnelle Lösung zu sein?

Einige Foren haben auf BGL-Inkompatibilitäten mit C++ 11 hingewiesen, die Programmierer bitten, zu C++ 03 zurückzukehren. Gibt es eine Alternative?

Dank

Antwort

1

Ich sehe kein Problem:

Mit den folgenden Grafiken:

#include <boost/graph/adjacency_list.hpp> 

struct NodeInfo { }; 
struct EdgeInfo { }; 

int main() { 
    using namespace boost; 
    { 
     typedef adjacency_list<vecS, vecS, directedS, NodeInfo, EdgeInfo> Graph; 
     Graph g(10); 
    } 
    { 
     typedef adjacency_list<vecS, vecS, undirectedS, NodeInfo, EdgeInfo> Graph; 
     Graph g(10); 
    } 
} 

Das sagt mir, Ihr Problem ist wahrscheinlich mit dem Nein deInfo/EngeInfo-Typen. Wenn sie nicht kopierbar sind, kann dies zu Fehlern führen. MSVC ist möglicherweise milder als der Standard erfordert (sie befinden sich häufig in Bereichen der Namenssuche und Referenzbindung).

+0

danke @sehe. add_edge erhöht den Fehler. Wie ist die Lösung? – Tims

+0

oops - nicht einmal add_edge - immer noch auf der Suche nach dem Bug – Tims

+0

Jage nicht nach dem Käfer. Suchen Sie nach der Ursache Ihres Compiler-Fehlers. Es ist nicht unwahrscheinlich, dass Sie etwas tun, um den Fehler zu verursachen – sehe

Verwandte Themen