动态转换为引用

mmo*_*hab 1 c++ dynamic-cast reference-type

我使用动态模型来保证安全:

这是我用指针的代码:

XYZ xyz = dynamic_cast<XYZ*>(abc);
if (xyz == nullptr)
{
    // TODO handle error
}
Run Code Online (Sandbox Code Playgroud)

现在有办法做同样的事情,但有参考:

XYZ& xyz = dynamic_cast<XYZ&>(abc);
if (xyz == nullptr)
{
    // TODO handle error
}
Run Code Online (Sandbox Code Playgroud)

这段代码没有编译,但我想问有没有办法以类似的方式做到这一点.

Bau*_*gen 6

dynamic_cast如果与引用一起使用,则会在失败时抛出异常.要处理失败,请捕获异常:

try {
    XYZ& xyz = dynamic_cast<XYZ&>(abc);
}
catch (std::bad_cast& e) {
    //handle error
}
Run Code Online (Sandbox Code Playgroud)