Предположим, у меня есть структура 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 без явного добавления их инициализации в этом случае?