【发布时间】:2012-08-23 04:42:32
【问题描述】:
我有基类A,B类继承自A,C类是模板类,继承自A。D类继承自C。关系如下:
A
/ \
B C (template class)
\
D
我可以使用 D 对象 D1 创建一个 A 对象 O1,然后我想将 O1 动态转换为 C 类型对象 C1。 但我发现它失败了。我的问题是为什么这个过程会失败?
然后我使用 static_cast 从 D 对象 D1 创建 C 类型对象 C2,并检查 C2 是否具有来自 D2 的正确值。使用static_cast从D类型转换为C类型总是成功吗?
谢谢!!!
【问题讨论】:
-
发布完整代码以及预期和实际结果。有无数的事情可能会出错,如果没有特定的代码,我们无法判断是哪一个。
-
你的基类有虚函数吗?如果没有,则不能使用
dynamic_cast。 -
请记住,大多数这些转换仅对指针和引用有效,对对象本身无效。从您的描述中不清楚您要转换的确切内容;一些示例代码会很有帮助。
标签: c++ templates dynamic casting