C++11 Boost有向图-添加边-存储边属性 typedef boost::邻接列表< boost::vecS,boost::vecS,boost::directedS,NodeInfo,EdgeInfo>Graph; 图g(10); EdgeInfo-be; 添加_边(0,1,be,g);

C++11 Boost有向图-添加边-存储边属性 typedef boost::邻接列表< boost::vecS,boost::vecS,boost::directedS,NodeInfo,EdgeInfo>Graph; 图g(10); EdgeInfo-be; 添加_边(0,1,be,g);,c++11,boost,boost-graph,directed-graph,C++11,Boost,Boost Graph,Directed Graph,错误: 使用已删除函数“boost::detail::stored_edge_”属性 在linux(gcc/4.9.2)下,将“未定向”更改为“定向”会导致错误,而在windows visual studio express 2013上编译效果良好。升幅:1.59.0 罪魁祸首似乎是阿杜·埃奇 有快速解决办法吗 一些论坛指出BGL与C++11不兼容,要求程序员恢复到C++03。还有别的选择吗 谢谢我看没问题: 使用以下图表: typedef boost::adjacenc

错误: 使用已删除函数“boost::detail::stored_edge_”属性

在linux(gcc/4.9.2)下,将“未定向”更改为“定向”会导致错误,而在windows visual studio express 2013上编译效果良好。升幅:1.59.0

罪魁祸首似乎是阿杜·埃奇

有快速解决办法吗

一些论坛指出BGL与C++11不兼容,要求程序员恢复到C++03。还有别的选择吗

谢谢

我看没问题:

使用以下图表:

    typedef  boost::adjacency_list<
    boost::vecS, boost::vecS, boost::directedS, NodeInfo, EdgeInfo> Graph;

   Graph g(10);
   EdgeInfo be;
   add_edge(0,1,be,g);
#包括
结构NodeInfo{};
结构EdgeInfo{};
int main(){
使用名称空间boost;
{
typedef邻接列表图;
图g(10);
}
{
typedef邻接列表图;
图g(10);
}
}

这说明您的问题可能与NodeInfo/EngeInfo类型有关。如果它们不可复制等,这可能会导致错误。MSVC可能比标准要求的更宽松(它们通常在名称查找和引用绑定方面)。

谢谢@sehe。add_edge正在引发错误。修复程序是什么样的?哎呀,甚至没有添加边缘,仍然在寻找bug,不要寻找bug。查找编译器错误的原因。你不太可能会做一些事情导致必须删除节点信息中未使用的显式析构函数,或者你可以声明
=default
另一个特殊成员:)你自己找到它做得很好
#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);
    }
}