C++ 初始化构造函数初始化列表中的嵌套结构?
C++ Initialize nested struct in constructor's initialization list?
struct B
{
int hh;
int ii;
};
struct A
{
B b_memberVar;
void *p_data;
};
struct C
{
A array[13];
int bb;
int cc;
int dd;
int ee;
int ff;
int gg;
};
struct D
{
C c_memberVar;
int aa;
};
class XYZ
{
XYZ();
D m_DMemberVar;
int zz;
}
XYZ::XYZ():
m_DMemberVar(
({{{
{{0,0},nullptr},
{{0,0},nullptr},
{{0,0},nullptr},
{{0,0},nullptr},
{{0,0},nullptr},
{{0,0},nullptr},
{{0,0},nullptr},
{{0,0},nullptr},
{{0,0},nullptr},
{{0,0},nullptr},
{{0,0},nullptr},
{{0,0},nullptr},
{{0,0},nullptr}
},0,0,0,0,0,0},0}),
zz(0)
){}
如何初始化构造函数初始化列表上的类成员变量嵌套结构?我尝试过使用许多嵌套的{},如上面的示例所示,但这会产生语法错误。错误给出了"预期的表达式"answers"预期的a")">
好吧,您的类定义有很多错误:
- 顺序错误且没有正向声明
- 缺少分号终止符
- 缺少构造函数声明
- 缺少构造函数定义体
- 示例/占位符初始化程序无效
但是,一旦修复了这些问题,实际上只是匹配你的牙套。
我们来了!
struct D
{
int D_MemberVar;
};
struct C
{
int* c_ptrMemberVar;
};
struct B
{
C c_memberVar;
D* d_ptrMemberVar;
};
struct A
{
B b_memberVar;
int int_memberVar;
};
class XYZ
{
A m_memberVar;
int z;
public:
XYZ();
};
XYZ::XYZ()
: m_memberVar{
{ // A::b_memberVar
{ // B::c_memberVar
nullptr // B::c_ptrMemberVar
},
nullptr // B::d_ptrMemberVar
},
3 // A::int_memberVar
}
, z(0)
{}
int main()
{
XYZ xyz;
}
(现场演示)
我怀疑关键是您试图使用A
的构造函数,但该类中没有非默认构造函数。所以你也需要顶级的{}
。
相关文章:
- 如何在C++中初始化嵌套类中的2个memeber
- 单独定义模板化嵌套类方法的正确语法
- 如何在 C++ 的外部类构造函数中初始化嵌套类成员
- c++在实现模板化嵌套类时遇到问题
- 访问另一个类中的模板化嵌套类函数和对象
- 在 C 中并行化嵌套循环的几种方法之间的差异,C++使用 OpenMP
- 为什么Clang无法使用默认的Integer_Sequence实例化嵌套的变异模板
- 从QT中的Q_PROPERTY序列化嵌套的用户定义类
- 如何在 cpp 中使用味精包序列化嵌套消息
- 如何初始化嵌套结构数组
- 初始化嵌套向量的大小
- 如何在给定包含类的实例的情况下实例化嵌套类
- 初始化嵌套类中的静态常量成员变量
- 通过反射在XML中的C/C++头文件中定义的可视化嵌套结构/联合
- OpenMP - 并行化嵌套循环
- 在嵌套模板专用化期间初始化嵌套模板类的静态成员
- 如何在C++中初始化嵌套类的构造函数
- 如何初始化嵌套结构的unique_ptr(例如二叉树)
- 初始化嵌套结构数组
- C++初始化嵌套结构