我在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