Создать структуру с графиком повышения - PullRequest
0 голосов
/ 22 сентября 2011

Я хочу использовать эту структуру, которую я создал с графиком:

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

1 Ответ

1 голос
/ 22 сентября 2011

Я сомневаюсь, что это даже компилируется, так как ваш 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?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...