Solution -- explicit bonus
class manager : public employee {public: manager* bonus(int n) { sal += n; return this; } };
manager'
Invariant -- restored
k + n == ((m->salary(k))->bonus(n))->salary()
class manager : public employee {public: manager* bonus(int n) { sal += n; return this; } };
manager'
k + n == ((m->salary(k))->bonus(n))->salary()