c++:错误 C2440: '<函数样式转换>' : 无法从“A”转换到“B<类型>”类型> 函数样式转换>
我有一个基类 A,它有一个子类 B。 A 覆盖 + 运算符,B 也覆盖它,调用父级的 + 运算符,并将结果转换为 B。然后我收到错误消息:
错误 C2440:“”:无法从“A”转换 到“B”
我认为多态性的工作方式应该允许这个工作?
I have a base class A and it has a subclass B.
A overrides the + operator and B overrides it as well,calls the parent's +operator, and casts the result to B. Then I am getting the error message:
error C2440: '' : cannot convert from 'A'
to 'B'
I thought polymorphism worked in a way that should allow this to work?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在多态性中,您不能将
A
转换为B
,但可以将B
转换为A
。 B 是 A 的一种,但 A 不是 B 的一种。例如,在经典的 Shape 类中。如果您有一个
Shape
类和一个继承自Shape
的类Rectangle
,则无法转换Shape
> 实例转换为矩形
,但您可以将矩形
转换为形状
,因为它是一种“某种”形状。In polymorphism you cannot convert
A
toB
, you can convertB
toA
. B is a kind of A, but A is NOT a kind of B.For example, in the classic Shape classes. If you have a class
Shape
and a classRectangle
that extends [inherit from]Shape
, you cannot convert aShape
instance toRectangle
, but you CAN cast aRectangle
toShape
, because it is a 'kind of' Shape.