Wanted to add one more option for Customer (if the validation is simple) picking 666 as a "sensible" default. I guess you might also use static const members instead of magic values.
Code:class Customer { public: Customer(unsigned pw): m_pw( pw < 500 ? pw : 666) {} //... };