[問題] TestMC的問題

看板EE_DSnP作者 (紅之豚)時間14年前 (2009/11/10 10:50), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/2 (看更多)
我在寫TestMC時, 跑出這樣的結果 ./testMC 3 2 1 Setting modulus = 16... num[0] = 3 num[1] = 14 num[2] = 1 num[3] = 5 num[4] = 10 num[5] = 2 num[6] = 4 num[7] = 10 num[8] = 0 num[9] = 0 num[0] = 17 num[1] = 14 num[2] = -4 num[3] = 5 num[4] = 20 num[5] = 2 num[6] = 0 num[7] = 5 num[8] = 0 num[9] = 0 對照ref code 第一次print 的都沒有問題。 錯誤是在第二次print的時候有些不在範圍內的數會印出來。 原因是因為在使用+=或*=時,因為直接return this pointer。 而我的check的機制是寫在constructor裡,所以第二次時不會 呼叫constructor來檢查,所以會發生 num[0]=3→OK num[1]=14→OK num[0]+=num[1] → 17的囧事。 想請問一下,有沒有什麼寫法可以讓+=可以使用到constructor的檢查, 而不需要在operator overloading裡加檢查的條件。 會這樣問是因為想維持operator 寫法的簡潔,不然以後每次只要增加一個 新的operator就要重新寫檢查的條件。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.230.9

11/10 10:58, , 1F
也許不用檢查, 直接 %= _modulus 就好了?
11/10 10:58, 1F
文章代碼(AID): #1A-DJnYW (EE_DSnP)
文章代碼(AID): #1A-DJnYW (EE_DSnP)