Помогите, пожалуйста, разобраться в программе. Изучаю C++ и дошел до перегрузки операторов. Мне нужно сделать следующее: реализовать класс Date, который будет хранить день, месяц и год, сделать инициализацию этого класса, а также перегрузкой оператора << вывести эту дату на экран в формате (1, 1, 2000). Класс я реализовал и перегрузку тоже, но выдает ошибку и ничего не могу поделать.
P.S. Перегрузку оператора нужно реализовать в классе, не за ее пределами (если это возможно)
Сам код: `
class Date {
int day;
int month;
int year;
public:
Date(int d, int m, int y)
: day {d}, month {m}, year {y} { }
int getDay() { return day; }
int getMonth() { return month; }
int getYear() { return year; }
ostream &operator<<(ostream &os) {
return os << '(' << getDay() << '.' << getMonth()
<< '.' << getYear() << ')' << endl;
}
};
int main() {
Date dd {10, 10, 2010};
cout << dd;
return 0;
}
`
Ошибка:
In function 'int main()':
error: no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and 'Date')
cout << dd;
~~~~~^~~~~
Вы создали оператор, который работает наоборот :)
dd << cout;
Вот как нужно - оператор должен быть свободной функцией:
class Date {
int day;
int month;
int year;
public:
Date(int d, int m, int y)
: day {d}, month {m}, year {y} { }
int getDay() const { return day; }
int getMonth()const { return month; }
int getYear() const { return year; }
};
ostream& operator<<(ostream &os, const Date& d) {
return os << '(' << d.getDay() << '.' << d.getMonth()
<< '.' << d.getYear() << ')' << endl;
}
int main() {
Date dd {10, 10, 2010};
cout << dd << endl;
return 0;
}
#include <iostream>
#include <ostream>
using namespace std;
class Date {
int day;
int month;
int year;
public:
Date(int d, int m, int y)
: day {d}, month {m}, year {y} { }
int getDay() const { return day; }
int getMonth() const { return month; }
int getYear() const { return year; }
friend ostream &operator<<(ostream &os, const Date &_date) {
return os << '(' << _date.getDay() << '.' << _date.getMonth()
<< '.' << _date.getYear() << ')' << endl;
}
};
int main() {
Date dd {10, 10, 2010};
cout << dd;
return 0;
}
Продвижение своими сайтами как стратегия роста и независимости