[英]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.