作者Billeve (瑞樹啊瑞樹)
看板C_and_CPP
標題[問題] 父類別指標指向子類別
時間Sat Jun 30 17:09:28 2018
如題,
在物件導向中,
父類物件的指標應該可以指向子類物件
但是今天在實作的時候一直出現例外狀況
但是也找不到任何原因
想請問一下可能造成這樣錯誤的原因
由於程式碼很多很雜在這裡就不附上了
出現錯誤的操作大概是這樣
父物件 a , 子物件 b
a** list = new a*[3];
list[0] = new b;
感謝
-----
Sent from JPTT on my Samsung SM-J510UN.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.9.37.212
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1530349770.A.BA2.html
1F:噓 Raymond0710: ... 沒程式碼當我們有水晶球?06/30 17:13
※ 編輯: Billeve (39.9.37.212), 06/30/2018 17:23:02
2F:推 steve1012: 寫一個最小重現bug的程式是debug的基本之一 練習一下吧 06/30 17:28
3F:→ loveflames: 父子大小不同,用陣列方式操作會有問題 06/30 17:34
4F:→ sarafciel: list[0] = new b;<=應該要這樣寫吧 06/30 17:45
啊啊 打錯QQ 修一下
5F:→ sarafciel: 然後請不要把class取這種跟變數名稱很像的名字XD 06/30 17:48
6F:→ loveflames: 直覺上像是他想用父類別陣列的方式操作子類實體 06/30 17:56
我是希望使用父類指標陣列來對多個不同的子物件操作
※ 編輯: Billeve (39.9.37.212), 06/30/2018 18:03:50
※ 編輯: Billeve (39.9.37.212), 06/30/2018 18:04:13
※ 編輯: Billeve (39.9.37.212), 06/30/2018 18:06:53
7F:→ tinlans: 你好歹把 class 的輪廓貼出來 06/30 18:14
8F:→ sarafciel: 這兩行常態下是合法的 原PO先像steve講的寫一段最小重 06/30 18:25
9F:→ sarafciel: 現的code再貼來看看吧 06/30 18:25
後來發現原來不是這個操作有問題
而是連最一般的
b test;
這樣一句純粹的宣告
都會導致bad_array_new_length
我覺得應該是整個物件有問題了
決定重寫,感謝各位協助QQ
※ 編輯: Billeve (39.9.37.212), 06/30/2018 18:51:07