и строку присваивает правильно (в тестовом выводе всё гуд), но на отладке, после выполнения возвращения, он меняет сроку на другую, рандомной длины.
И после завершения программы выдаёт ошибку delete_scalar.cpp
Что не так?
Date Date::operator+(const Date& other) const
{
int new_date = date + other.date;
int new_month = month + other.month;
int new_year = year + other.year;
char word[] = "Unknown";
Date new_date_obj { new_date, new_month, new_year, word };
new_date_obj.print();
return new_date_obj;
}
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
тут все не так. начиная с сигнатуры вашего оператора
Всё ещё неправильно :( Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
Всё ещё неправильно :( Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
Мне кажется, не хватает текста ошибки. А еще конструкторов и деструктора, при наличии
Ошибка : Инструкция точки останова (оператор __debugbreak() или аналогичный вызов) выполнена в Date1.exe. Date::Date(int date, int month, int year, char* day_of_week) { this->date = date; this->month = month; this->year = year; this->day_of_week = new char[strlen(day_of_week) + 1]; strcpy(this->day_of_week, day_of_week); this->day_of_week[strlen(day_of_week)] = '\0'; } Date::~Date() { delete[] day_of_week; }
А копирующий/перемещающий конструкторы?
И операторы присваивания
Вы на c++ пишите. Используйте нормальные строки.
Тогда он не прострелит себе ноги
ещё и инициализировать можно вот так Date(int date) : date(date)
Если я использую стринг, тогда лектор прострелит мне ноги
не используй указатели, хотя бы по ссылке передавай. Или копируй, так точно ноги останутся целы
Хорошо, тогда следуй правилу 5: - Копирующий конструктор - Перемешающие конструктор - Копирующий оператор присваивания - Перемешающие оператор присваивания - Деструктор Если в классе объявлено (или заделичено) хотя бы одно, то надо объявить (или заделитить) и все остальное
В этом случае ноги так же будут прострелены, мне нужно использовать указатель
Обсуждают сегодня