为什么我不能将超类引用强制转换为同时扩展另一个超类的子类?
Why can't I cast super class reference to a subclass that is extending another super class as well?
我试图理解继承中的菱形问题,我正在模拟它。这是我的文件:
using namespace std;
class top {
int a;
};
class left : public top {
int b;
};
class right : public top {
int c;
};
class bottom : public left, public right {
int d;
};
int main() {
bottom* b = new bottom ();
left* l = (left*) b;
right* r = (right*) b;
cout << l << " " << r << endl;
return 0;
}
我不应该做到这一点吗?大多数教程都说这是可能的。然而,我得到编译器错误说它是模棱两可的。有人能解释一下吗?
您应该避免using namespace std
,因为std::left
和std::right
与您自己的定义冲突。
相关文章:
- 模板转换为超类
- 我的超类中的模板问题与结构定义
- 创建子类的多个实例,其中只有一个超类实例
- 给定一个指向对象的超类指针,如何获取对象的大小?
- 重写另一个方法 [C++] 使用的超类回调函数
- 用初始化列表和超类构造函数声明子类构造函数的正确方式
- 我们可以在没有新实例化的情况下声明一个抽象方法来返回抽象超类中的子类对象吗
- C++为API中定义的结构创建超类
- 可变参数模板类扩展
- 使用派生类C++方法的超类
- 确保指向超类的指针指向c++中某个子类的对象
- 如何将超类的受保护成员访问到其派生类. 如果已在派生类中声明了具有相同名称的函数?
- 在从给定超类继承的所有类上调用虚函数
- 如何使 Swig 发出C++超类
- 如何根据构造函数参数使用超类类型初始化成员变量?
- C++:从类型索引中获取超类类型索引
- 为什么编译器找不到超类的方法?
- 无法使用子类变量访问超类公共成员
- 如何在c++中扩展和使用超类的成员
- 为什么我不能将超类引用强制转换为同时扩展另一个超类的子类?