如何在c ++ 98中初始化作为类成员的结构?

时间:2018-04-26 16:45:54

标签: c++ struct constructor c++98

该应用程序是用C ++ 98编写的,我目前无法更改它。情况是这样的:

struct foo
{
    int x;
    int y;
    int z;
}

class myClass
{
    public:
        myClass();
        struct foo bar;
        int baz;
};


myClass::myClass() :
bar({0}),
baz(0)
{
    //something else.
}


int main(int argc, char** argv)
{
    myClass* thing = new myClass();
    cout << thing.bar.z << endl;  //want a guaranteed zero here.
}

以上作品,但产生:

 warning: extended initializer lists only available with -std=c++11 or -std=gnu++11.

这是完全可以预料的。我无法使用c ++ 98在初始化列表中执行bar({0})。问题仍然是正确的方法。

我可以想到工作的几种方式 - memset,在构造函数中按字段分配值,使用结构的默认复制构造函数分配,等等。我不知道哪个方式被认为是最正确的#39;但在这种情况下。

0 个答案:

没有答案