我有一个基类 A,它有一个子类 B。 A 覆盖 + 运算符,B 也覆盖它,调用父级的 + 运算符,并将结果转换为 B。然后我收到错误消息:
error C2440: '' : cannot convert from 'A' to 'B'
我认为多态性的工作方式应该允许它工作?
最佳答案
在多态中你不能将A
转换成B
,你可以将B
转换成A
。 B 是 A 的一种,但 A 不是 B 的一种。
例如,在经典的 Shape 类中。如果你有一个 Shape
类和一个扩展 [inherit from] Shape
的类 Rectangle
,你不能转换 Shape
实例到 Rectangle
,但您可以将 Rectangle
转换为 Shape
,因为它是一种“某种”形状。
关于c++:error C2440: '<function-style-cast>': 无法从 'A<TYPE>' 转换为 'B<TYPE>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7614313/