作者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/cn.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