作者ric2k1 (Ric)
看板EE_DSnP
标题Re: [讨论] HW 1.2.p2 的 return garbage
时间Tue Oct 19 01:45:39 2010
※ 引述《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
1F:推 BBSealion:谢谢教授! 了解了 10/19 02:12
2F:→ KatsHC:所以不能用throw喔@@? 10/19 23:51
3F:→ ric2k1:你要用 throw 也是可以啦...但你要 handle这个exception吗? 10/19 23:53
4F:→ KatsHC:我本来是想说把程式结束掉就好了...囧a 10/20 00:50