2015-11-02 63 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