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

Jam*_*mes 1 c++ polymorphism compiler-errors

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

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

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

ami*_*mit 8

在多态中你无法转换AB,你可以转换BA.B是一种A,但A不是一种B.

例如,在经典的Shape类中.如果你有一个类Shape和一个Rectangle扩展[继承自]的类Shape,你不能将Shape实例转换为Rectangle,但你可以转换RectangleShape,因为它是'一种'形状.