2015-11-02 64 views
-1

我有有,月,日和年的变量定义的日期类的头文件和重载增量法:C++重载增量运算符

mydate operator++(int) { 
    return mydate(m, d+1, y); 
} 

和主CPP包括了头,所以一旦我运行cout<<dateXY++;它显示日期递增1,但是,它不保留对象的值,而是将其重置为原始值。因此,如果我在增量后放置cout<<dateXY;,它会显示原始日期。

我可以修改运算符重载,以便对象保持该值吗?

+0

是的,你可以。所以,这样做(存储递增的值)。 –

+0

我的意思是有可能在h文件中做?当然,我总是可以在主文件中做date = date ++,但这不是我的问题 – Norgul

回答

3

假设这个函数是mydate类的成员函数(就没有太大的意义,否则),您需要创建的mydate一个临时的实例与价值,增加this的值,并返回临时实例。

mydate operator++(int) { 
    mydate tmp(m, d, y); 
    // set date to date + 1 
    return tmp; 
} 

这是递增运算符是如何工作的,它增加值,但增量之前返回旧值。

+0

我知道它是如何工作的,这就是为什么我添加了如果我打印出来后,它不增加:)它是一个班级成员 – Norgul

+0

@Norgul它不会改变,因为你不会改变它。在我的答案中查看代码片段中的注释,您需要在那里更改'this'对象,而不是像创建和返回修改的对象。我只写了一条评论,因为我不知道成员变量。 –

+0

明白了,谢谢,我现在试着去做 – Norgul