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;