是否可以使用对派生类实例的基类引用初始化派生类引用
Can I Initialize a derived class reference with a base class reference to derived class instance?
我有如下内容:
class A { ... };
class B : public A { ... };
// ...
B b;
const A& aref(b);
// ...
const B& bref(aref);
当我编译时,我得到:
no suitable user-defined conversion from "const A" to "const B" exists
现在,如果这些是指针而不是引用,我会使用
bptr = dynamic_cast<B*>(aptr);
但参考文献没有这个。我该怎么办?切换到指针?别的?
您可以使用
dynamic_cast
作为引用,它们只是抛出异常,而不是在失败时返回nullptr
:
try {
const B& bref(dynamic_cast<const B&>(aref));
}
catch (const std::bad_cast& e) {
//handle error
}
如果你绝对知道aref
其实是一个B
,那么你可以做一个static_cast
:
const B& bref(static_cast<const B&>(aref));
相关文章:
- 如何使用基类指针引用派生类成员
- 如何引用基类的派生类?
- 通过基类接受方法转发派生 UniquePtr 的右值会移动引用而不是复制
- 如何复制只引用基类的派生类
- 从 Base 引用对象调用派生类的成员
- C++ 为什么要将对基类的引用传递给派生类的构造函数
- 通过基类引用派生类后打印的错误值
- 如何在 c++ 中通过基类引用访问派生类的对象?
- 从基类的共享指针向下转换到派生类的引用
- 如何在模板成员中引用派生类?
- 传递指针或引用派生类,以便调用基类方法
- 通过引用派生类对象从基类对象执行向下转换时引发bad_cast异常
- 不能引用派生模板类中的基类成员
- 是否可以将常量unique_ptr引用(派生类)转换为shared_ptr(基类)
- 通过引用派生的来调用C++基实现
- 从c++中另一个(不相关的!)类的基类引用派生类的对象
- 从基类引用派生类参数
- 引用派生类中的基类成员
- 如何在指向基类对象的指针向量中引用派生对象
- C++ - 基类指针,方法指针,引用派生类,方法