c++:错误 C2440: '<函数样式转换>' : 无法从“A”转换到“B<类型>”

发布于 2024-12-08 01:38:48 字数 170 浏览 0 评论 0原文

我有一个基类 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我们只是彼此的过ke 2024-12-15 01:38:48

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

例如,在经典的 Shape 类中。如果您有一个 Shape 类和一个继承自 Shape 的类 Rectangle,则无法转换 Shape > 实例转换为矩形,但您可以将矩形 转换为形状,因为它是一种“某种”形状。

In polymorphism you cannot convert A to B, you can convert B to A. 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 class Rectangle that extends [inherit from] Shape, you cannot convert a Shape instance to Rectangle, but you CAN cast a Rectangle to Shape, because it is a 'kind of' Shape.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文