我想使用我用图创建的这种结构:
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?