プライベートフィールドとしてchar*を持つStringという単純なクラスがあります。
class String {
char *s;
+ some public methods
};
+演算子をオーバーロードしたいので、a + bは、aとbの文字列が連結されることを意味します。
関数はここにあります:
String String::operator+(String a)
{
String rez;
rez.s = new char[strlen(this->s) + strlen(a.s) + 1];
assert(rez.s);
strcpy(rez.s, this->s);
strcat(rez.s, a.s);
cout<<rez.s<<endl; // HERE rez.s CONTAINS THE RIGHT STRING!
return rez;
}
私がこれを呼んだ後:c = a + b;
デバッグアサーションに失敗したというエラーが表示されます。
何か案は?