Мне нужно самой написать для класса String
оператор operator=
. Но он не правильно работает. Что я не правильно делаю?
String & String::operator=(const char other)
{
delete[] mString;
mSize = std::strlen(&other);
mString = new char[mSize + 1];
for (decltype(mSize) i = 0; i < mSize; ++i)
mString[i] = other[&i];
mString[mSize] = '\0';
return *this;
}
Думаю, вы хотите это? К сожалению, сам класс вы не показываете, так что приходится гадать...
String& String::operator=(const char * other)
{
delete[] mString;
mSize = std::strlen(other);
mString = new char[mSize + 1];
strcpy(mString, other);
return *this;
}
Для одного символа:
String& String::operator=(char other)
{
delete[] mString;
mSize = 1;
mString = new char[mSize + 1];
mString[0] = other; mString[1] = 0;
return *this;
}
Если вдруг у вас реализованы конструктор из C-строки и большая тройка(а она должна быть реализована раз уж вы динамически выделяете память), то можно сделать так:
String & String::operator=(const char *other){
*this = String(other);
return *this;
}
UPD: Раз уж опечатки нет, и у вас уже есть operator=(const char*)
, то можно так:
String & String::operator=(const char c){
char cstr[] = {c, 0};
*this = cstr;
return *this;
}
Возникли трудности в процессе написания динамической библиотеки, содержащей реализацию методов классаБиблиотека подключается к главному...
ЗдравствуйтеПытаюсь реализовать примитивный tower defence
Сколькими способами можно создать обьект класса на С++ в ООП?