c ++:错误C2440:'<function-style-cast>':无法从'A <type>'转换为'B <type>'</type> </type> </function-style-cast>

时间:2011-09-30 18:06:43

标签: c++ compiler-errors polymorphism

我有一个基类A,它有一个子类B. A覆盖+运算符,B也会覆盖它,调用父级的+运算符,并将结果转换为B.然后我收到错误消息:

  

错误C2440:'':无法从'A'转换   到'B'

我认为多态性的工作方式应该能够实现吗?

1 个答案:

答案 0 :(得分:8)

在多态中,您无法将A转换为B,您可以将B转换为A。 B是一种A,但A不是B。

例如,在经典的Shape类中。如果您的课程Shape和课程Rectangle扩展[继承自] Shape,则无法将Shape实例转换为Rectangle,但您可以将Rectangle投射到Shape,因为它是'一种'形状。