В настоящее время я пытаюсь переписать оператор + = для класса, который я написал под названием 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;
}
Где длина - длина строки, а данные - строка, хранящаяся в формате char *.
Программа отлично работает, когда я пытаюсь сделать что-то вроде:
MyString test1 = "hi";
MyString test2 = "to";
test1 += test2;
Но не работает, когда я пытаюсь что-то вроде:
MyString test;
MyString test1 = "hi";
MyString test2 = "to";
test += test2 + test1
+= "you";
В основном, когда я запускаюсмешивание + = и + попеременно, это не работает.Вот ошибка при компиляции:
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&)
Кто-нибудь знает, как я могу изменить свой код для достижения этой функциональности?