boost庫中的智慧型指標向上轉換

2021-08-26 10:31:48 字數 582 閱讀 2608

這裡稍微解釋下何謂指標型別的向下轉換和向上轉換。向下轉換是指派生類指標轉換為基類指標型別,向上轉換是指基類指標型別轉換為派生類型別。c++一般使用dynamic_cast轉換符實現向上轉換。智慧型指標可以毫無問題的進行向下型別轉換,卻不能使用dynamic_cast進行向上型別轉換。例如:

#include "boost/shared_ptr.hpp" class base ; virtual ~base(){}; protected: private: }; class deriveclass : public base ; virtual ~deriveclass(){}; protected: private: }; int main(int argc, _tchar* argv)

那麼怎麼實現智慧型指標的向上轉換呢?今天發現boost庫有乙個dynamic_pointer_cast的模板函式,可以實現智慧型指標的向上轉換。如上例的可以這樣寫:

boost::shared_ptrptrderive = boost::dynamic_pointer_cast(ptrbase);

另外在osg庫中的智慧型指標向上轉換也使用類似的dynamic_pointer_cast的模板函式。

boost庫中的智慧型指標向上轉換

這裡稍微解釋下何謂指標型別的向下轉換和向上轉換。向下轉換是指派生類指標轉換為基類指標型別,向上轉換是指基類指標型別轉換為派生類型別。c 一般使用dynamic cast轉換符實現向上轉換。智慧型指標可以毫無問題的進行向下型別轉換,卻不能使用dynamic cast進行向上型別轉換。例如 includ...

boost庫中的智慧型指標向上轉換

這裡稍微解釋下何謂指標型別的向下轉換和向上轉換。向下轉換是指派生類指標轉換為基類指標型別,向上轉換是指基類指標型別轉換為派生類型別。c 一般使用dynamic cast轉換符實現向上轉換。智慧型指標可以毫無問題的進行向下型別轉換,卻不能使用dynamic cast進行向上型別轉換。例如 cpp vi...

boost庫中的智慧型指標向上轉換

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!這裡稍微解釋下何謂指標型別的向下轉換和向上轉換。向下轉換是指派生類指標轉換為基類指標型別,向上轉換是指基類指標型別轉換為派生類型別。c 一般使用dynamic cast轉換符實現向上轉換。智慧型指標可以毫無問題的進行向下型別轉換,卻不能使用dyna...