如何在另一个struct中使用struct?

Sha*_*adi 6 c++ struct

我想使用嵌套结构,但我不知道如何在其中输入数据,例如:

struct A {
    int data;
    struct B;
};
struct B {
    int number;
};
Run Code Online (Sandbox Code Playgroud)

所以当我来使用时主要是:

int main() {
    A stage;
    stage.B.number;
}
Run Code Online (Sandbox Code Playgroud)

是不是如果不是我如何使用它?

Rob*_*edy 14

结构的每个成员变量通常具有名称类型.在您的代码中,第一个成员A有类型int和名称data.第二个成员只有一个类型.你需要给它一个名字.让我们说b:

struct A {
  int data;
  B b;
};
Run Code Online (Sandbox Code Playgroud)

要做到这一点,编译器需要已经知道什么B是,这样声明结构之前声明A.

要访问嵌套成员,请按名称引用路径中的每个成员,以下分隔.:

A stage;
stage.b.number = 5;
Run Code Online (Sandbox Code Playgroud)


pax*_*blo 9

内部必须有某种名称,以便您可以引用它struct BA

struct B {
    int number;
};
struct A {
    int data;
    struct B myB;
};
:
struct A myA;
myA.myB.number = 42;
Run Code Online (Sandbox Code Playgroud)

  • 这是非法的。成员类型的定义必须位于成员之前。 (2认同)

Pup*_*ppy 8

struct A {
    struct B {
       int number;
    };
    B b;
    int data;
};
int main() {
    A a;
    a.b.number;
    a.data;
}
Run Code Online (Sandbox Code Playgroud)


iam*_*ind 5

struct B {  // <-- declare before
  int number;
};
struct A {
 int data;
 B b; // <--- declare data member of `B`
 };
Run Code Online (Sandbox Code Playgroud)

现在您可以将其用作

stage.b.number;
Run Code Online (Sandbox Code Playgroud)