我目前正試圖改寫爲一類+ =運算符我寫的叫了mystring:運算符重載問題
MyString& operator+=(MyString& s1, const MyString& s2)
{
int newStringLength = s1.length + s2.length;
char* newStorage = new char[newStringLength + 1];
strcpy(newStorage, s1.data);
strcpy(newStorage + s1.length, s2.data);
delete[] s1.data;
s1.length = newStringLength;
s1.data = newStorage;
return s1;
}
MyString operator+(const MyString& s1, const MyString& s2)
{
MyString temp;
delete[] temp.data;
temp.length = s1.length;
temp.data = new char[temp.length+1];
strcpy(temp.data, s1.data);
temp+=s2;
return temp;
}
哪裏長度字符串和數據的長度是存儲在字符*格式的字符串。
程序工作正常,當我嘗試做這樣的事情:
MyString test1 = "hi";
MyString test2 = "to";
test1 += test2;
但是,當我嘗試像不起作用:
基本上當我開始混合+ =和+中交替的方式它不起作用。這裏是彙編錯誤:
testoutput.cpp:26: error: no match for ‘operator+=’ in ‘operator+(const MyString&, const MyString&)(((const MyString&)((const MyString*)(& test1)))) += "you"’
mystring.h:45: note: candidates are: MyString& operator+=(MyString&, const MyString&)
有沒有人有任何想法我可以更改我的代碼,以實現此功能?
什麼是's1.data'初始化爲默認構造函數(這就是你用'MyString test'調用的內容? – matthias
data = new char [1]; data [0] ='\ 0' ; 長度= 0; – KWJ2104
你能後的完整源爲MyString的類 – Ternary