は実証プログラム
#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;
}
を行うことができたアプローチは、タスクに依存しての使用でありますオブジェクト。
本当にポインタが必要ですか? のように宣言できますか?inner1 a; inner2 b; ' 「o.a.w」のように使用しますか? – Ceros
これはCかC++ですか? – blazs
私は非常に大規模なこの概念を使用するプログラムで働いています!それは、デバッグする痛みや、壊れたときに痛みがあるので、どこにでもメモリを割り当てたり、割り当てを解除することができます。もしあなたがそれを使用しているなら、ドキュメントを作成してください。 –