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