我需要在我的程序中使用投射。我在我的代碼的標題,在我的基類動態鑄造的侷限性是什麼?
scSupervisor* msSupervisor; ///< My Supervisor
,我想在相同的標題來創建一個訪問函數,在派生類中
Supervisor* Supervisor_Get(void){ return (Supervisor*)msSupervisor;}
//dynamic_cast<Supervisor*>(msSupervisor);}
如圖所示,靜態鑄造編譯和運行良好。但是,如果我更改爲動態演員版本(顯示註釋),則顯示錯誤消息:
cannot dynamic_cast '((Core*)this)->Core::<anonymous>.scCore::msSupervisor' (of type 'class scSupervisor*') to type 'class Supervisor*' (target is not pointer or reference to complete type)
dynamic_cast<Supervisor*>(msSupervisor);}
^
在我看來,它是一個指針。我做違法的事嗎?
此代碼是否看到「Supervisor」的完整聲明?看到我強調錯誤消息:_「目標不是指針或引用**完整類型**」_。 – user0042
看到這個答案https://stackoverflow.com/questions/332030/when-should-static-cast-dynamic-cast-const-cast-and-reinterpret-cast-be-used – Clonk