假设我有一个充满继承性的C++库。当我知道它实际上指向一个Derived
对象并且Derived
继承Base
时,我得到了一个函数Base*
。但我不知道它是什么样的继承(public/protected/private)。我也不知道层次结构中是否有虚拟功能。static_cast vs dynamic_cast
鉴于这种情况,没有寻找到的源代码/文档Base
和Derived
,其中投我应该使用?或者我应该首先查阅代码/文档以确保多态性?
背景
我写的QMainWindow
changeEvent
功能的Qt 4.7。 changeEvent
函数需要QEvent*
,我可以通过知道QEvent::type()
来投射到其他类型。我想知道是否应该使用static_cast
或dynamic_cast
。
谢谢。
如果您使用的任何库使用受保护的继承,现在是时候找到一个更好的书面库。 – 2011-01-10 15:00:39
这个问题可能会有所帮助:http://stackoverflow.com/questions/28002/regular-cast-vs-static-cast-vs-dynamic-cast – 2011-01-10 15:01:07
@Zac:希望我可以downvote评论。如果你不知道这个图书馆是做什么的,你如何判断受保护的继承是否是这个工作的正确工具? – Puppy 2011-01-10 15:03:59