C+中匿名类型的嵌套结构+; 我试图将C中嵌套结构代码移植到C++中。我知道C++中的内部结构类型将是外部结构类型的成员。在我的例子中,我有一个没有类型的内部结构(用*标记),我不知道如何将struct2完全指定给编译器 typedef struct struct1 { struct // * { struct struct2 { int bla; int bla2; } *array; int bla3; } list; int bla4; } struct1_t; int main() { struct1_t *st = new struct1_t(); st->bla4 = 10; st->list.bla3 = 45; // ? st->list.array = new struct1_t::struct2(); return 0; }

C+中匿名类型的嵌套结构+; 我试图将C中嵌套结构代码移植到C++中。我知道C++中的内部结构类型将是外部结构类型的成员。在我的例子中,我有一个没有类型的内部结构(用*标记),我不知道如何将struct2完全指定给编译器 typedef struct struct1 { struct // * { struct struct2 { int bla; int bla2; } *array; int bla3; } list; int bla4; } struct1_t; int main() { struct1_t *st = new struct1_t(); st->bla4 = 10; st->list.bla3 = 45; // ? st->list.array = new struct1_t::struct2(); return 0; },c++,struct,C++,Struct,编辑:上面的结构代码由ASN1编译器自动生成,我无法对其进行任何更改。这在C++11中适用: st->list.array = new decltype( struct1_t::list )::struct2; 如果你打算用C++方式使用C++,那么考虑放弃C TyPufF构造。更喜欢别名声明而不是typedef。结构是C++中的类,结构是C++中的类型,它不是“没有类型的结构”,而是匿名结构类型。但不清楚你到底有什么问题。只需使用与变量声明分离的专有名称编写普通定义。

编辑:上面的结构代码由ASN1编译器自动生成,我无法对其进行任何更改。

这在C++11中适用:

st->list.array = new decltype( struct1_t::list )::struct2;

如果你打算用C++方式使用C++,那么考虑放弃C<代码> TyPufF构造。更喜欢别名声明而不是typedef。结构是C++中的类,结构是C++中的类型,它不是“没有类型的结构”,而是匿名结构类型。但不清楚你到底有什么问题。只需使用与变量声明分离的专有名称编写普通定义。