【发布时间】:2015-12-21 16:49:30
【问题描述】:
我有一个日期类型的对象“d”。我正在尝试使用重载运算符仅从用户那里获取一个参数,而不是对象具有的三个参数。换句话说,我希望程序能够从用户那里获取输入,并且只能更改“month_”数据成员,然后将该数据成员传递给“incMon()”,以便月份和year 根据用户希望仅使用“month_”数据成员增加日期的月份进行相应调整。
如何调整重载运算符和 incMon() 以允许此过程发生?
这就是我所拥有的。
void Date::read(istream & is)
{
unsigned month;
is >> month;
month_ = month;
}
istream & operator>>(istream & is, Date & d)
{
d.read(is);
return is;
}
【问题讨论】:
-
好吧,其实我不明白为什么你需要一个 Date 参数来表示 IncrementMonth?
-
这是我要求的一部分。如果我不需要那个日期参数,事情会容易得多。
-
如果您能澄清
incrementMonth应该做什么,这将有所帮助,因为您不使用该参数。它是否修改参数或*this或两者兼而有之?在你说d1.incrementMonth(d2, 1)之后,d1和d2的期望值是多少? (我的猜测是d2保持不变,d1包含将d2增加一个月的日期,但这只是猜测。) -
对不起。我只是不知道如何实现它并调用它。该函数采用两个参数并递增日期,因此如果日期为 01-01-2000(月-日-年)并且用户将其递增 13 个月,则输出应为 (02-01-2001)。
标签: c++ oop operator-overloading cin istream