struct rectangle : ... { long left() const { return m_left; } void left(const long & l) { m_left = l; notify(&me::left); } ... };