2013-12-19 5 views
0

У меня есть вопрос здесь, и мне нужна ваша помощь. Пусть говорят, у меня есть две структуры, как показано ниже:Слияние/объединение двух структур

struct HE_edge 
{ 
    double k; 
} 

struct HE_vert 
{ 
double x,y,z; 
HE_edge *e; 
} 
HE_vert *head=0; 
int main() 
{ 

HE_vert *vert; 
vert = new HE_vert; 

HE_edge *ei; 
ei = new HE_edge; 

vert->x = 0.5; 
vert->y = 1.5; 
vert->z = 5.6; 
vert->e->k = 10.3; 
} 

Проблема здесь есть, я хочу, чтобы подключить к HE_vert HE_edge. Но когда я запускаю программу, появляется сообщение об ошибке «Необработанное исключение в 0x008c1cd6 в halfedge.exe ...». Может ли кто-нибудь объяснить мне, почему это происходит и как решить эту проблему? Спасибо заранее

+3

Вашими структурами нужны точки с запятой в конце. – Blacktempel

+0

Что такое 'HE_vert * head' для? Вы никогда не используете его. – luiscubal

+0

Blacktempel: спасибо, что уведомите меня об ошибке. :) – user3040961

ответ

2

Вы не инициализировали поле vert->e.

Добавить vert->e = ei, прежде чем использовать его.

+1

Ой okeh .. Спасибо :) .. Я постараюсь изменить мою структуру .. Спасибо всем !!!!! – user3040961

0

Вы получаете исключение, потому что вы не выделили память для vert->e. использовать vert->e=new HE_edge перед назначением значения.

0

Поскольку вы не установили vert->e, вы получаете неопределенное поведение при назначении vert->e->k. Возможно, вы имели в виду, чтобы инициализировать значение, как

vert->e = e2; 
0
  1. Ваши Структуры нуждаются в их точкой с запятой конца.

  2. Вы не указали какую-либо область памяти для: vert->e.

  3. Пожалуйста, добавьте return EXIT_SUCCESS; к вашей основной функции.

+0

Его основная функция возвращает 0. Отсутствие оператора return в main означает, что функция возвращает 0. –

+0

Несмотря на это, я все равно напишу его в коде. Отредактированный ответ. – Blacktempel

Смежные вопросы