Как исправить ошибку в операторе =?

Нужно написать оператор присваивания для класса. Все уже как-бы написано но неизвестная мне ошибка портит всю малину. Вот код функции :
void String::operator=(String& other) {
	delete[]this->string_;
	this->string_ = new char[strlen(other.string_)];

	for (size_t i = 0; i < strlen(other.string_); i++)
	{
		this->string_[i] = other.string_[i];
	}
}

Вот код мейна :
#include "String.h"
#include <iostream>
using namespace std;

int main() {
	
	String str1;	
	str1.inputString();

	String str2;
	str2 = str1;
	
	str2.print();
}
  • Вопрос задан
  • 72 просмотра
Решения вопроса 2
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Надо выделять памяти на +1 символ для завершающего '\0' (который вы тоже должны в конце ставить).

Потом, можно использовать strcpy вместо ручного цикла. И потом, ваш класс сильно проигрывает std::string - подумайте над вариантом использовать его. Ну или используйте его внутри вашего класса вместо ручного выделения памяти.
Ответ написан
Комментировать
Adamos
@Adamos
Ну, поскольку нам эта ошибка тоже неизвестна, вы обречены.

Впрочем, хрустальный шар мне подсказывает, что вы работаете с С-style строками, но при этом забываете про завершающий 0. Только и всего.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы