こんなんどうよ。

// property.h
template<class T, class O, T O::*M>
class property {
  O &obj;
 public:
  property(O &o) : obj(o) {}
  property& operator=(const T& x) {obj.*M = x; return *this;}
  operator const T&() const {return obj.*M;}
  operator T&() {return obj.*M;}
};