簡體   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