Как инициализировать структуры, которые являются членами класса в C ++ 98? - PullRequest
0 голосов
/ 26 апреля 2018

Приложение написано на 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.

, что вполне ожидаемо. Я не могу сделать bar({0}) в списке инициализаторов с C ++ 98. Остается вопрос, как правильно это сделать.

Я могу придумать пару способов, которыми будет работать - memset, присваивать значения полям в конструкторе, присваивать с помощью конструктора копирования по умолчанию структуры и т. Д. Я не знаю, какой способ считается «самый правильный» в этой ситуации, хотя.

...