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

标签 c++ compiler-errors polymorphism

我有一个基类 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/

相关文章:

c# - 在 C# 代码中导入 DLL 函数

c++ - 在丰富的编辑文本控件中检测换行符

c# - 错误 CS1513 : } expected in asp. 网络 mvc 4

c++ - 为类实现标识符或使用 dynamic_cast

c++ - 对这个简单的官方 boost::iostream 代码给出了一堆警告?

c++ - Qt - QStringList 到 QByteArray

java - Ant exclusfile 编译java文件

java - 无法从静态主函数内部调用非静态构造函数

language-agnostic - 尝试尽可能简单地描述多态性

c++ - 仅将继承用于 C++ 中的多态性