2011-09-22 34 views
0

我whant使用这种结构,我已经有一个图表创建:创建提升图形结构

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." 
+0

不要你的typedef结构在C++中。全大写名称通常保留给预处理器宏。 –

回答

1

我怀疑这甚至编译,因为你的INFOGRAPH类甚至不名为的成员。

更重要的是,你从来没有创建过类的实例 - 你只是创建了一个指针,将其设置为NULL并将其解除引用。当然,这是无效的,并让你坠毁。

您可以选择自动或动态作出一个实例,这取决于你打算如何使用它:

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

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

+1耐心和克制 – sehe