set関数は削除しないで、オブジェクト生成直後の、日付の設定はコンストラクタを使って行いたいのですが、
(コンストラクタでは、不正な日付を排除する)
(不正な日付のときは、0年0月0日に設定する)
ということをしたいのですが、
コンストラクタを学び始めたばかりなので、
どこをどう変更していいのかわかりません。
どうしたらよいのか、教えてください。
よろしくお願いします。
#include <iostream>
using namespace std;
class Date {
private:
int year;
int month;
int day;
public:
int set(int y, int m, int d) {
int cm[] = { 0, 31, 28, 31, 30,
31, 30, 31, 31, 30, 31, 30, 31 };
if (!(1 <= m && m <= 12)) {
return 1;// 月が間違い
}
if (!(1 <= d && d <= cm[m])) {
return 1;// 日が間違い
}
year = y;
month = m;
day = d;
return 0;
}
void get(int &y, int &m, int &d) {
y = year;
m = month;
d = day;
}
void next() {
int cm[] = { 0, 31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31 };
day++;
if (cm[month] < day) {
day = 1;
month++;
if (12 < month) {
month = 1;
year++;
}
}
}
};
int main()
{
int yy, mm, dd, y, m, d;
cin >> yy >> mm >> dd;
Date d1(yy, mm, dd);
d1.get(y, m, d);
if (y != 0 && m != 0 && d != 0) {
cout << yy << "年" << mm << "月" << dd << "日が設定されました" << endl;
d1.next();
d1.get(yy, mm, dd);
cout << "次の日は" << yy << "年" << mm << "月" << dd << "日です" << endl;
}
else {
cout << "正しく設定されていません" << endl;
}
return 0;
}