Я пытаюсь написать свой собственный класс строки, используя библиотеку для подготовки к экзамену. Но у меня была эта ошибка, говорящая, что
main.cpp:9:22: error: no match for ‘operator+’ (operand types are ‘const
char [5]’ and ‘MyString’)
MyString c = "Hola" + b;
Моя главная такая. Работает файл, потом "Привет" и б поменяй место.
MyString b("Mundo\n");
MyString c = "Hola" + b;
Я думаю, что это не вызывает конструктор там.
У моего класса есть это в частном порядке.
char * _str
int _length
Мой конструктор.
MyString::MyString(const char * str){
int length = 0;
for(char c = str[0]; c != '\0' ; c++)
++length;
_length = length;
_str = new char[length+1];
strcpy(_str,str);
}
И мой + перегруз
const MyString MyString::operator+(const MyString& mS) const{
char * tempChar = new char[_length + mS._length];
MyString tempStr(tempChar);
delete[] tempChar;
strcpy(tempStr._str,_str);
strcat(tempStr._str,mS._str);
return tempStr;
}
Редактировать: я решил это, сделав функцию оператор + другом, но я хочу знать, почему