Самый краткий способ исправить ваш фрагмент кода - предоставить оператор вывода для Date
объектов, например,
std::ostream& operator << (std::ostream& os, const Date& date)
{
return os << date.day << "/" << date.month << "/" << date.year;
}
затем используя правильные операторы для чтения пользовательского ввода
cin >> d >> m >> y;
и, наконец, с помощью конструктора Date
, сгенерированного компилятором:
cout << Date{d, m, y};
Вам не нужна функция, создающая объект даты, если вы не проверяете ввод.
Обратите внимание, однако, что Date
объекты теперь могут находиться в недопустимых состояниях (отрицательные значения дня или месяца и т. Д.), Поэтому для дальнейшего уточнения вы должны либо реализовать правильный конструктор, который генерирует недопустимый ввод, либо изменить createDate
функция такая, что это например возвращает std::optional<Date>
, который является пустым (std::nullopt
) при недопустимом вводе.