[問題] TestMC的問題
我在寫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
11/10 10:58, 1F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
問題
1
1