[英]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 向下转换是允许的,如果IAssetEditorInstance
是FAssetEditorToolkit
的非虚拟明确基并且指针确实指向此类类型(或具有此类非虚拟基的类型)的 object。
如果其中一些限制不满足,您可以使用dynamic_cast
代替(只要基础是多态的)。 确保检查它是否返回 null。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.