class A{
 string m;
public:
 string &x(){
  return m;
 }
};

int main(){
 A a;
 a.x()="aaa";
 cout << a.x() << endl;
 return 0;
}

このようなコードがあるとき、mainを変えずに、a.x()で値を取得するときと、a.x()=で値を代入
するときとで挙動を変えることはできるのでしょうか。
x()の返り値を別なクラスにして、operator=とoperator string()などを使えばできそうで
もうすこし簡単にやる方法はありますか?