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