C ++在构造函数的初始化列表中初始化嵌套结构?

时间:2019-01-04 11:10:22

标签: c++ struct constructor initialization

WebView webview = (WebView) findViewById(R.id.webView);  
webview.loadUrl("INSERT_URL_HERE");

如何初始化作为构造函数初始化列表中类成员变量的嵌套结构? 我尝试使用大量的嵌套{},如上面的示例所示,但产生了语法错误。 错误给出“期望的表达式”和“期望的”)”“

1 个答案:

答案 0 :(得分:2)

好吧,您的类定义有很多错误:

  • 顺序错误,没有前瞻性声明
  • 缺少分号终止符
  • 缺少构造函数声明
  • 缺少构造函数定义正文
  • 样本/占位符初始化程序无效

但是,一旦修复了这些,实际上只是匹配括号的一种情况。

我们在这里!

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;
}

live demo

我怀疑关键是您试图使用A的构造函数,但是该类中没有非默认构造函数。因此,您也需要在顶层使用{}