2010-10-31 2 views
0

Учитывая следующий код:C++ - Вопрос о ЬурейиХ

typedef struct IntElement 
{ 
    struct IntElement *next; // use struct IntElement 
    int   data; 
} IntElement; 

typedef struct IntElement 
{ 
    IntElement *next; // Use IntElement 
    int   data; 
} IntElement; // why I can re-use IntElement here? 

Я использую выше структуры данных для определения узла связного списка.

  1. Какой из них лучше?
  2. Почему я могу использовать дублированное имя (т. Е. Struct IntElement и IntElement в конце typedef)?

ответ

8

Не является C++. Первое объявление - это старый синтаксис C. Второй - это тот, кто понял, что вам не нужно это на C++, а затем забыл о нем на одну строку позже. C++ делает это следующим образом:

struct IntElement { 
    IntElement* next; 
    int data; 
}; 
2

@ Q1: Ни в C++. Просто используйте

struct IntElement { 
    IntElement *next; 
    int data; 
}; 

struct IntElement автоматически typedef полукольцо в IntElement