C ++:在另一个struct中定义一个struct?

时间:2015-03-20 17:58:13

标签: c++ struct

所以我一直在玩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

从我在输出中看到的它似乎正在起作用。但我只是不明白为什么或如何运作。这是好习惯吗?这有什么应用吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

但我只是不明白为什么或如何运作。

为什么它不起作用?它是完全合法的C ++。

  

这是好的做法吗?

取决于它是如何使用的。

  

这有什么应用吗?

当然。例如,当您在structure2内只需要structure1而在其他任何地方。让它的范围尽可能小是很好的。

有关详细信息:Why would one use nested classes in C++?