我在KDE軟件中遇到過一些情況,其中一個是KPart的dynamic_cast在OS X上失敗。我不是一個C++專家,所以我甚至不知道從哪裏開始調試這樣一個情況。 我已經看到這種情況發生與ktimetracker,以及最新的(和更好的討論)情況是Okular中:https://bugs.kde.org/show_bug.cgi?id=345765當dynamic_cast失敗時,這意味着什麼?
一言以蔽之:在Okular::Part
類繼承的類Okular::ViewInterface
(作爲最後一個父列表中的)。然而當代碼檢索到Okular::Part*
實例(part
)時,dynamic_cast<Okular::ViewInterface*>(part)
返回NULL。
上面BKO票券的最後一個評論是,在這種情況下使用靜態轉換將是一個窮人的修復,但是我應該嘗試弄清楚爲什麼dynamic_cast失敗。這導致我有2個問題:
- 除了這裏的傳統演員,dynamic_cast還有什麼作用?
- 我該如何找出失敗的原因?這將是運行時,libC++,否的問題?
在鑄造班級時,某種原因喜歡(彷彿)鑄造結構的程度如何?我想,真正重要的是類變量,而不是類的功能? – RJVB 2015-04-09 19:13:21