[問題] 今天遇到的一個問題~~
我做了一個 super class叫做 class A
其中A1 和A2 都是他的sub class
而其中有個 function void foo() 在 class A中是宣告成
virtual void foo () = 0; 也就是pure virtual function
在A1和A2實作了這個 virtual void foo()
接著就是讓程式一直亂跑,瘋狂的new 和delete …
然後出現了一個錯誤訊息…
大意就是 foo() 是個 pure virtual funcion,不能執行,所以發生錯誤。
可是從頭到尾都是new A1或是A2,因為 A裡面有pure virtual function的關係
new出來也不能用。除了在管理記憶體時用了A的指標來管理多型的物件。
想問的是,什麼原因造成這樣的結果?
我能想到的是存取了不明的記憶體…但個人覺得這個可能性還蠻小的。
因為如果存取到不明的記憶體的話,不可能會進入foo這個function,
應該更早之前就爛了,而且發生segmentation fault之類的訊息
在管理記憶體上是用了map<UINT64, A*>
所以…這跟STL不適合存指標有關係嗎?
--
「當我真心追尋著我的夢想時,每一天都是繽紛的。
因為我知道每一個小時都是在實現夢想的一部分,
當我真實地在追尋著時,一路上我都會發現從未想像過的東西,
如果當初我沒有勇氣去嘗試看來幾乎不可能的事,如今我就還只是個牧羊人而已。」
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.59.242
推
04/13 16:40, , 1F
04/13 16:40, 1F
→
04/13 16:41, , 2F
04/13 16:41, 2F
→
04/13 16:47, , 3F
04/13 16:47, 3F
推
04/13 17:35, , 4F
04/13 17:35, 4F
→
04/13 17:35, , 5F
04/13 17:35, 5F
→
04/13 17:35, , 6F
04/13 17:35, 6F
推
04/13 17:51, , 7F
04/13 17:51, 7F
→
04/13 17:51, , 8F
04/13 17:51, 8F
推
04/13 19:16, , 9F
04/13 19:16, 9F
→
04/13 19:17, , 10F
04/13 19:17, 10F
→
04/13 19:17, , 11F
04/13 19:17, 11F
→
04/13 21:56, , 12F
04/13 21:56, 12F
→
04/13 22:31, , 13F
04/13 22:31, 13F
→
04/13 22:32, , 14F
04/13 22:32, 14F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章