分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
這裡稍微解釋下何謂指標型別的向下轉換和向上轉換。向下轉換是指派生類指標轉換為基類指標型別,向上轉換是指基類指標型別轉換為派生類型別。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...