MyStringクラスの演算子+および+=をオーバーロードする必要があります。
MyString.h
class MyString
{
char* m_pStr;
};
主要
MyString s1("ABC"), s2("kkk");
MyString s("S");//GMV
s1 +=s;
s2 = s+s1;
stop
MyString.cpp
MyString MyString:: operator + (const MyString & rhs){
char * tmp = create_tmp_string(this->m_pStr, rhs.m_pStr);
return MyString(tmp);
};
MyString & MyString:: operator += (const MyString & rhs){
char * tmp = create_tmp_string(this->m_pStr, rhs.m_pStr);
return MyString(tmp);
};
char* MyString:: create_tmp_string(char * one, char * two){
int total_length = strlen(one) + strlen(two);
char * tmp = new char[total_length + 1];
tmp[0] = '\0';
strcat(tmp, one);
strcat(tmp, two);
return tmp;
}
私の問題は:
s2 = s+s1; // Working
s1 +=s; // Not working.
さて、私がコードを段階的に実行すると:
MyString & MyString:: operator += (const MyString & rhs){
char * tmp = create_tmp_string(this->m_pStr, rhs.m_pStr);
return MyString(tmp);
};
tmpはSABCであることが判明しました。ただし、s1にはSABCは含まれず、ABCを保持したままになります。
私たちを手伝ってくれますか?