作者Lauyea (Lauyea)
看板C_and_CPP
標題[問題] 自訂例外類別
時間Thu Oct 4 21:26:08 2018
開發平台(Platform):Win10
編譯器:VB2017
問題(Question):執行結果跟預期的不同
預期的正確結果(Expected Output):https://i.imgur.com/8iSjYo5.png
錯誤結果(Wrong Output):https://i.imgur.com/JkIIBlK.png
程式碼(Code):我是參考網路上的教學網站
https://openhome.cc/Gossip/CppGossip/CustomExceptionClass.html
補充說明(Supplement):
我自己測試到 _message = str2.c_str(); 這行都還沒有問題,但是在用.message()方法
呼叫以後就變成亂碼了,有在想是不是string轉入char*的問題,或是_message沒有傳回
基礎類別的定義。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.57.132
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1538659571.A.D59.html
1F:→ a27417332: 等等我有眼花看錯嗎,這是個「教學」? 10/04 21:34
2F:→ a27417332: 那個string過了ctor就被銷毀了,所以ptr過了這區也無效 10/04 21:37
3F:→ Lauyea: 那請問我有甚麼辦法可以把結果保留到用方法呼叫嗎? 10/04 21:40
4F:→ Lauyea: 我有試過用new去分配記憶體,但是位址好像一直有問題 10/04 21:40
5F:推 jerryh001: strcpy 10/05 00:32
6F:推 steve1012: 為何不直接用string存就好 何必new delete strcpy? 反 10/05 02:53
7F:→ steve1012: 正你要copy 10/05 02:53
8F:推 Killercat: 不要存c_str() 這是FAQ了 10/05 07:47
9F:→ Killercat: 你要存成C literial的話 要自己strcpy 10/05 07:47
10F:→ Killercat: 即使string物件沒銷毀 c_str()還是會變動的 10/05 07:48
11F:→ Lauyea: 謝謝大家,那我再用strcpy試試看 10/05 08:39
我把ArrayIndexOutOfBoundsException下面的實作改成這樣:
http://codepad.org/H7ZOpFqI
但是.message()變成一片空白,從head file去cout也沒有東西。
※ 編輯: Lauyea (1.161.57.132), 10/05/2018 10:14:08
12F:推 steve1012: 為什麼不直接存一個string 然侯直接寫進那個string, 10/05 12:47
13F:→ steve1012: 要存一個char pointer? 10/05 12:47
14F:→ sarafciel: 一樣的問題 str3過了ctor就被回收了 10/05 13:00
15F:→ sarafciel: 像steve講的 你把_message弄成string來存會比較好 10/05 13:02
16F:推 school4303: 因為char pointer是範例上的 原po不想改吧 10/05 13:03
17F:→ school4303: 是說exception有要避免new/delete嗎?沒有的話就new 10/05 13:05
18F:→ school4303: 給_message 再strcpy給_message如何? 10/05 13:06
我後來也感覺這個catch的方式挺沒效率的,我應該就先照schoolさん說的試試看。
不好意思讓人覺得有點鬼打牆,我一開始也不是很清楚這樣宣告類別的用意,謝謝大家。
※ 編輯: Lauyea (1.161.57.132), 10/05/2018 14:56:26