我想使用我用图创建的这种结构:

typedef struct type_INFOGRAPH
{
    boost::adjacency_list < boost::listS, boost::vecS, boost::undirectedS, Node, Line > graphNetworkType;

    map<int,graph_traits<graphNetworkType>::edge_descriptor> emymap;

    map<int, graph_traits<graphNetworkType>::vertex_descriptor> vmymap;

}INFOGRAPH;

但是当我尝试用函数构造图时:
INFOGRAPH *infograph = NULL;

infograph->graph = CreateGraphFromDataset3(file);

我收到这样的错误:
"Unhandled exception at 0x00ae4b14 graph.exe : 0xC0000005: Access violation reading location 0x00000018."

最佳答案

我怀疑这是否可以编译,因为您的INFOGRAPH类甚至没有名为graph的成员。

不过,更重要的是,您从未创建过该类的实例-您仅创建了一个指针,将其设置为NULL并取消引用了它。自然,这是无效的,并且会使您崩溃。

您可以根据使用方式自动或动态创建实例:

// Automatic:
INFOGRAPH infograph;
infograph.graph = CreateGraphFromDataset3(file);

// Dynamic:
INFOGRAPH * pinfograph = new INFOGRAPH;
pinfograph->graph = CreateGraphFromDataset3(file);
// ouch, who cleans up `*pinfograph` now?

10-04 20:38