看板 EE_DSnP 關於我們 聯絡資訊
※ 引述《BBSealion (海獅)》之銘言: : 其實我不太懂的是,要去判斷return garbage 的用意 : 照程式的邏輯來看(以寫定的function Matrix inputMatrix 來說) : 輸入i一開始的上限就被限制住了 (i < nRows) : 這樣不會有超過而要return garbage的時候吧? (還是我沒發現orz) : 而且程式也沒有要求判斷奇怪的狀況 : 也就是說matrix的+和*的過程,都要一開始輸入就是合理的才去考慮 : (雖然即使超過好像也沒有影響?) : 或者退一步說,感覺上是可以寫到不會發生這個條件而完成作業要求(吧?) : 真的不論如何都有可能會因為輸入錯誤,而觸發這個判斷條件嗎? : (在完成作業的狀況下) 對,按照題目的 main 是不應該有輸入的 i >= _nRows 的情況發生, 所以題目要求要 return garbage 的用意也是希望 code 本身可以考慮得更周詳一點, 當然,(題目)還是有一些缺陷,請見我回答另一位同學的信,請大家配合與包含。 ====================================================================== : 教授你好: : 為了garbage問問題感覺有點愚蠢XD : 之前我弄一個local variable給它傳 出現一堆warning : 但在class裡面沒用的東西感覺有點找不到 : (例如Vector裡的_size或是_data指的東西都有點不想給寫錯的程式亂搞) : 所以我現在是回傳_data[_size]給它 : 也就是不屬於我的leap memory裡的東西 : (因為_data的大小就是_size) : 可是這樣弄一弄感覺又更危險了 : 讓使用者亂弄leap memory很讓人心驚 : 那有沒有更好的沒想到的東西呢? : 希望教授可以給我一點小小的解惑~ : 謝謝教授 (Sorry for my late response. I have meetings all day long...) 嗯,你的考量都很正確, Vector 裏頭可以 return 而不會有 warning 的也只有 _size 以及 _data 而已。 但是你又不希望隨便回傳 data member 而讓寫錯的程式搞亂, 而題目又說不能隨便加或更改 data member... 這樣子的確是沒有什麼好的解決辦法, 當然,如果不是作業規定限制的話,我想你可以有兩種選擇: 1. Throw 一個 exception 出去,讓 caller 端決定要怎麼處置, 如果 caller 忽略不處置的話,程式就會自動結束掉... 2. 宣告一個 gloal 的變數,當作 error handler, 如果是 class 的話,就宣告一個 static data member, 這樣回傳它就不會有甚麼問題了。 話說回來,這個作業還是請你 "勉為其難" 的用不會違反作業規定的方式來處理好了! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.11.13
BBSealion:謝謝教授! 了解了 10/19 02:12
KatsHC:所以不能用throw喔@@? 10/19 23:51
ric2k1:你要用 throw 也是可以啦...但你要 handle這個exception嗎? 10/19 23:53
KatsHC:我本來是想說把程式結束掉就好了...囧a 10/20 00:50