У меня возникает ошибка сегментации, и я понятия не имею, как ее отладить! Это происходит после создания массива MyString
, т. Е. Массива, созданного без каких-либо проблем.ошибка сегментации C++
void ConcatTest()
{
cout << "\n----- Testing concatentation on MyStrings\n";
const MyString s[] =
{MyString("outrageous"), MyString("milk"), MyString(""),
MyString("cow"), MyString("bell")};
for (int i = 0; i < 4; i++) {
cout << s[i] << " + " << s[i+1] << " = " << s[i] + s[i+1] << endl;
}
}
Так что я думаю, что это может быть что-то в том, как я перегружен оператор + здесь:
MyString operator+(MyString str1, MyString str2)
{
MyString resultStr = MyString();
delete [] resultStr.pString;
resultStr.pString = new char[strlen(str1.pString) + strlen(str2.pString) + 1];
MyString temp = MyString();
delete [] temp.pString;
temp.pString = new char[strlen(str1.pString) + 1];
strcpy(temp.pString, str1.pString);
delete [] str1.pString;
str1.pString = new char[strlen(str1.pString) + strlen(str2.pString) + 1];
strcpy(str1.pString, temp.pString);
strcat(str1.pString, str2.pString);
strcpy(resultStr.pString, str1.pString);
return resultStr;
}
Любой вид помощи или совета будут оценены!
Да, в объявлении функции можно встретить «const» для str1 и str2. –
Спасибо за объяснение! –