2015-03-20 2 views
-1

, поэтому я играл с C++. Я пытался выяснить, можно ли определить структуру в определении другой структуры. И вот мой код.C++: определение структуры внутри другой структуры?

#include <iostream> 
using namespace std; 

int main(){ 
    struct structure1{ 
     int integer1; 
     struct structure2{ 
      int integer2; 
     }struct2; 
    }struct1; 
    structure1 *s1 = &struct1; 
    s1->integer1 = 50; 
    cout<<"STRUCTURE ONE'S INTEGER: "<<s1->integer1<<endl; 
    cout<<"STRUCTURE ONE'S STRUCTURE2.integer2: "<<s1->struct2.integer2; 
} 

ВЫВОД:

$ ./a.out 
STRUCTURE ONE'S INTEGER: 50 
STRUCTURE ONE'S STRUCTURE2.integer2: 0 

Из того, что я видел в выходе казалось, работает. Но я просто не понимаю, почему и как это работает. Это хорошая практика? Есть ли какие-либо приложения к этому?

Спасибо!

+0

Там, кажется, не будет ничего плохого, кроме отсутствия инициализации 'integer2'. –

+0

@ E_net4 Я сделал, но то, что я напечатал, по какой-то причине было отключено, я положил остальных обратно. – ddolce

+0

Тем не менее, ваш вопрос заставляет задуматься, что вы не читали о совокупных типах на C++ и о том, что вы можете их вложить. –

ответ

0

Но я просто не понимаю, почему и как это работает.

Почему бы не работать? Это совершенно законный C++.

Это хорошая практика?

В зависимости от того, как он используется.

Есть ли применение к этому?

Определенно. Например, когда вам нужно только structure2 внутри structure1 и нигде больше. Приятно сделать свой охват настолько малым, насколько это возможно.

Для получения дополнительной информации: Why would one use nested classes in C++?

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