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

2021-06-01 13:28:40 字數 699 閱讀 9304

這裡稍微解釋下何謂指標型別的向下轉換和向上轉換。向下轉換是指派生類指標轉換為基類指標型別,向上轉換是指基類指標型別轉換為派生類型別。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進行向上型別轉換。例如 cpp vi...

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

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

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

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