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

2021-08-31 06:45:34 字數 841 閱讀 1178

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

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

ptrderive = boost::dynamic_pointer_cast(ptrbase);

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

給我老師的人工智慧教程打call!

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

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

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

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

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

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