Есть ли способ заставить C ++ struct value инициализировать все переменные-члены POD?
Предположим, у меня есть структура C ++, которая имеет переменные-члены POD и не-POD:
struct Struct {
std::string String;
int Int;
};
и чтобы моя программа создавала воспроизводимое поведение, я хочу, чтобы все переменные-члены инициализировались при создании. Я могу использовать список инициализатора для этого:
Struct::Struct() : Int() {}
проблема в том, как только мне нужно изменить мою структуру и добавить новую переменную-член POD (скажем,bool Bool
) Я рискну забыть добавить его в список инициализаторов. Тогда новая переменная-член не будет инициализирована значением во время конструирования структуры.
Также я не могу использоватьmemset()
хитрость:
Struct::Struct()
{
memset( this, 0, sizeof( *this ) ); //can break non-POD member variables
}
потому что зоветmemset()
перезаписать уже созданные переменные, не являющиеся членами POD, могут нарушить их.
Есть ли способ обеспечить инициализацию значения всех переменных-членов POD без явного добавления их инициализации в этом случае?