我想使用嵌套结构,但我不知道如何在其中输入数据,例如:
struct A {
int data;
struct B;
};
struct B {
int number;
};
所以当我来使用它时主要是:
int main() {
A stage;
stage.B.number;
}
如果不是我怎么用呢?
答案 0 :(得分:10)
结构的每个成员变量通常都有名称和类型。在您的代码中,A
的第一个成员的类型为int
,名称为data
。第二个成员只有一个类型。你需要给它一个名字。我们说b
:
struct A {
int data;
B b;
};
为此,编译器需要知道B
是什么,因此在声明A
之前声明struct 。
要访问嵌套成员,请按名称引用路径中的每个成员,以.
分隔:
A stage;
stage.b.number = 5;
答案 1 :(得分:7)
struct A {
struct B {
int number;
};
B b;
int data;
};
int main() {
A a;
a.b.number;
a.data;
}
答案 2 :(得分:3)
struct B { // <-- declare before
int number;
};
struct A {
int data;
B b; // <--- declare data member of `B`
};
现在你可以用它作为,
stage.b.number;
答案 3 :(得分:2)
struct B
中的A
必须具有某种名称,以便您可以参考:
struct B {
int number;
};
struct A {
int data;
struct B myB;
};
:
struct A myA;
myA.myB.number = 42;
答案 4 :(得分:0)
struct A
{
int data;
struct B
{
int number;
}b;
};
int main()
{
A stage = { 42, {100} };
assert(stage.data == 42);
assert(stage.b.number == 100);
}
答案 5 :(得分:0)
struct TestStruct {
short Var1;
float Var2;
char Var3;
struct TestStruct2 {
char myType;
CString myTitle;
TestStruct2(char b1,CString b2):myType(b1), myTitle(b2){}
};
std::vector<TestStruct2> testStruct2;
TestStruct(short a1,float a2,char a3): Var1(a1), Var2(a2), Var3(a3) {
testStruct2.push_back(TestStruct2(0,"Test Title"));
testStruct2.push_back(TestStruct2(4,"Test2 Title"));
}
};
std::vector<TestStruct> testStruct;
//push smthng to vec later and call
testStruct.push_back(TestStruct(10,55.5,100));
TRACE("myTest:%s\n",testStruct[0].testStruct2[1].myTitle);
答案 6 :(得分:0)
我有点像以下代码现在运行一段时间,它可以工作。
int?
@ zx485:编辑:编辑/清理代码。原始转储的借口。
说明:
定义lightTimer。基本上是一个包含2个变量的结构。
//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
定义一个lightTable。第一个元素是lightTimer。
struct lightTimer {
制作一个实际的(命名的)实例:
struct lightTable {
我们现在有5个频道,有50个定时器。
访问如下:
struct lightTable channel[5];