嵌套结构使用初始化和使用
nested structures using initialization and use
所以我有一个头文件:
struct inner1 {
int w;
int x;
};
struct inner2 {
int y;
int z;
};
struct outer{
inner1 *a;
inner2 *b;
};
现在,我主要想初始化这些结构并使用它们。我如何初始化所有三个结构,以便outer将inner1和inner2识别为它所指向的特定结构。然后假设我想访问变量w。它是outer.a->w吗?我不熟悉处理指针的嵌套结构。感谢您的帮助。
struct inner1 {
int w;
int x;
};
struct inner2 {
int y;
int z;
};
struct outer{
inner1 *a;
inner2 *b;
};
int _tmain(int argc, _TCHAR* argv[])
{
outer o;
o.a = new inner1();
o.b = new inner2();
o.a->w = 1;
o.a->x = 2;
o.b->y = 3;
o.b->z = 4;
//做事
delete o.a;
delete o.b;
return 0;
}
这将允许您声明和初始化结构。
这里有一个演示程序
#include <iostream>
int main()
{
struct inner1 {
int w;
int x;
};
struct inner2 {
int y;
int z;
};
struct outer{
inner1 *a;
inner2 *b;
};
outer o = { new inner1 { 10, 20 }, new inner2 { 30, 40 } };
std::cout << "o.a->w = " << o.a->w << ", o.a->x = " << o.a->x
<< ", o.b->y = " << o.b->y << ", o.b->z = " << o.b->z
<< std::endl;
delete o.a;
delete o.b;
}
程序输出为
o.a->w = 10, o.a->x = 20, o.b->y = 30, o.b->z = 40
或者你可以按照的方式
#include <iostream>
int main()
{
struct inner1 {
int w;
int x;
};
struct inner2 {
int y;
int z;
};
struct outer{
inner1 *a;
inner2 *b;
};
inner1 i1 = { 10, 20 };
inner2 i2 = { 30, 40 };
outer o = { &i1, &i2 };
std::cout << "o.a->w = " << o.a->w << ", o.a->x = " << o.a->x
<< ", o.b->y = " << o.b->y << ", o.b->z = " << o.b->z
<< std::endl;
}
方法取决于任务和对象的使用。
您的两个假设都是正确的。
只要这三个结构是按照这个顺序定义的,就不需要做出进一步的声明。
欢迎使用c++。
你将为自己做的最大的事情是尽早了解智能指针。
用原始指针来写结构几乎总是错误的。
#include <memory>
#include <iostream>
struct inner1 {
inner1(int a, int b) : w(a), x(b) {}
int w;
int x;
};
struct inner2 {
inner2(int a, int b) : y(a), z(b) {}
int y;
int z;
};
struct outer{
outer(int w, int x, int y, int z)
: a(std::make_unique<inner1>(w,x))
, b(std::make_unique<inner2>(y,z))
{}
std::unique_ptr<inner1> a;
std::unique_ptr<inner2> b;
};
int main()
{
auto p_outer = std::make_unique<outer>(1, 2, 3, 4);
return 0;
// p_outer.a and .b are destroyed automatically here
// and all memory is reclaimed.
}
相关文章:
- 在C和C++中初始化结构中的数组
- 我们可以用参数化构造函数初始化结构的数组吗?
- 尝试初始化结构内的联合时出错
- 使用其他成员初始化结构的成员?
- 使用构造函数初始化结构还是在之后设置其值更好?
- 如果不初始化结构中的向量,它会自动为空还是具有随机内存位置的值?
- 如何在另一个结构中初始化结构数组?
- 如何在构造函数中初始化结构体的动态数组?
- 初始化结构中的联合 - c++
- 尝试初始化结构向量时出现编译错误
- 用于初始化结构的 void 指针强制转换
- 初始化结构的两种方式
- 使用用户定义的构造函数初始化C++结构
- 使用初始值设定项列表初始化结构,对于 std::array 失败
- 在 c++ 中初始化结构的指针
- 无序列图会创建一个零初始化结构吗?
- 如何在C++中初始化结构
- C 用结构指针初始化结构
- 在C 中初始化结构数组
- 使用数组聚合初始化结构数组