Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在另一个结构中使用结构?_C++_Struct - Fatal编程技术网

C++ 如何在另一个结构中使用结构?

C++ 如何在另一个结构中使用结构?,c++,struct,C++,Struct,我想使用嵌套结构,但不知道如何在其中输入数据,例如: struct A { int data; struct B; }; struct B { int number; }; 因此,当我开始使用它时,主要是: int main() { A stage; stage.B.number; } 如果不是这样,我该如何使用它?在A中的struct B必须有某种名称,以便您可以引用它: struct A { struct B { int nu

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

struct A {
    int data;
    struct B;
};
struct B {
    int number;
};
因此,当我开始使用它时,主要是:

int main() {
    A stage;
    stage.B.number;
}

如果不是这样,我该如何使用它?

A
中的
struct B
必须有某种名称,以便您可以引用它:

struct A {
    struct B {
       int number;
    };
    B b;
    int data;
};
int main() {
    A a;
    a.b.number;
    a.data;
}
struct B {
    int number;
};
struct A {
    int data;
    struct B myB;
};
:
struct A myA;
myA.myB.number = 42;

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

struct A {
  int data;
  B b;
};
为此,编译器需要已经知道
B
是什么,所以在声明
A
之前先声明该结构

要访问嵌套成员,请按名称引用路径上的每个成员,并用
分隔:

A stage;
stage.b.number = 5;
struct TestStruct{
短Var1;
浮动变量2;
charvar3;
结构TestStruct2{
char-myType;
我的头衔;
TestStruct2(charb1,cstringb2):myType(b1),myTitle(b2){}
};
std::vector testStruct2;
TestStruct(短a1,浮点a2,字符a3):Var1(a1),Var2(a2),Var3(a3){
testStruct2.push_back(testStruct2(0,“测试标题”);
testStruct2.向后推(testStruct2(4,“Test2标题”);
}       
};
std::向量testStruct;
//稍后将smthng按到vec并呼叫
testStruct.push_-back(testStruct(10,55.5100));
跟踪(“myTest:%s\n”,testStruct[0].testStruct2[1].myTitle);

我现在有一些类似于下面的代码在现场运行了一段时间,并且可以正常工作

//define a timer
struct lightTimer {
  unsigned long time;                                                 //time in seconds since midnight so range is 0-86400
  byte          percentage;                                           // in percentage so range is 0-100
};

//define a list of timers
struct lightTable {
  lightTimer timer[50];
  int        otherVar;
};

//and make 5 instances
struct lightTable channel[5];                           //all channels are now memory allocated
@zx485:编辑:编辑/清除代码。这是一个原始垃圾场的借口

说明:

定义一个lightTimer。基本上是一个包含2个变量的结构

struct lightTimer {
定义一个灯台。第一个元素是lightTimer

struct lightTable {
创建一个实际(命名)实例:

struct lightTable channel[5];
我们现在有5个频道和50个定时器

访问权限,如:

channel[5].timer[10].time = 86400;
channel[5].timer[10].percentage = 50;
channel[2].otherVar = 50000;

啊,你就是那个人,所以我不说“结构B”,我说的是“B B”,好吧,你可以说
struct B
,但同样,这只是类型。你还需要给它起个名字。(说代码<结构> b/COD>而不是只是代码> B<代码>是一种C风格,而不是C++,所以如果你写代码的方式,人们会觉得你很奇怪。)最糟糕的是他的原始代码是完全合法的。它只是没有达到他想要的效果:他的成员
structb
声明存在一个嵌套类
a::B
,稍后将对其进行定义。与非嵌套的
B
无关。@Shadi如果提供的答案帮助您解决了问题,请不要忘记单击问题旁边的复选标记以正式接受它作为答案。这是非法的。成员类型的定义必须在成员之前。通过一些解释围绕代码示例将大大改进您的答案。
struct lightTimer {
struct lightTable {
struct lightTable channel[5];
channel[5].timer[10].time = 86400;
channel[5].timer[10].percentage = 50;
channel[2].otherVar = 50000;