Вы можете использовать подобъект для инициализации en masse. Участник работает, но тогда вам нужно квалифицировать весь доступ. Так что наследование лучше:
struct MoneyData
{
double amountP, amountG, totalChange;
int twenty, ten, five, one, change;
int quarter, dime, nickel, penny;
};
struct Money : MoneyData
{
void foo();
Money() : MoneyData() {} /* value initialize the base subobject */
};
Демонстрация (размещение new
используется, чтобы убедиться, что память не равна нулю до создания объекта): http://ideone.com/P1nxN6
Контраст с небольшим изменением кода в вопросе: http://ideone.com/n4lOdj
В обоих вышеизложенных demos, double
удалены, чтобы избежать возможных недействительных кодировок / NaN.