次のコードは正しいです
string s1="abc";
string s2="bcd";
string &rs1=s1;
string &rs2=s2;
rs1=rs2;
cout<<rs1<<"----"<<rs2<<endl;
また、次のコードはコンパイル エラーになります。
class A
{
public:
A(string& a):ma(a) { }
string& ma;
};
string s1="abc";
string s2="bcd";
A oa(s1);
A ob(s2);
oa=ob;
cout<<oa.ma<<"----"<<ob.ma<<endl;
上記はすべてstring&
型の割り当てですが、なぜそれらをクラスに入れるとコンパイルエラーが発生するのでしょうか? (gcc バージョン 4.7.1)
エラー情報は
non-static reference member 'std::string& A::ma', can't use default assignment operator