繁体   English   中英

C++ 从指针调用父虚拟 function

[英]C++ Calling parent virtual function from pointer

我有这个代码:

void FAuCoreEditorModule::OnAssetEditorOpen(
    UObject* EditObject
  , IAssetEditorInstance* Toolkit)
{
    FName NAme = Toolkit->GetEditorName();
    if(Toolkit->GetEditorName() == "CurveTableEditor")
    {
        FAssetEditorToolkit* AET = static_cast<FAssetEditorToolkit*>(Toolkit);
        AET->FAssetEditorToolkit::RegisterTabSpawners(AET->GetTabManager().ToSharedRef());
    }
}

Toolkit的类型为ICurveTableEditor

RegisterTabSpawners

是 FAssetEditorToolkit 中的虚拟FAssetEditorToolkit CurveTableEditor 实现它,但从不调用父级。 我想调用父实现,而不修改原始源代码。 想出了这个:

FAssetEditorToolkit* AET = static_cast<FAssetEditorToolkit*>(Toolkit);
AET->FAssetEditorToolkit::RegisterTabSpawners(AET->GetTabManager().ToSharedRef());

这合法吗? 或者它只是偶然工作?

这合法吗?

可能是的。 不必要。

Static 向下转换是允许的,如果IAssetEditorInstanceFAssetEditorToolkit的非虚拟明确基并且指针确实指向此类类型(或具有此类非虚拟基的类型)的 object。

如果其中一些限制不满足,您可以使用dynamic_cast代替(只要基础是多态的)。 确保检查它是否返回 null。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM