2013-01-10 82 views
1

我是一個非常適合C++的初學者。我有以下問題。在類MevisPatientModel我定義:增強共享指針初始化

typedef boost::shared_ptr<egMevisPatientModel> Ptr_t; 

然後我 「中定義的」 變量:

egMevisPatientModel::Ptr_t v_PatientModel; 

現在,當我嘗試訪問類MevisPatientModel的的getType功能:

v_PatientModel->getType() 

...我收到以下消息:

斷言失敗! ... shared_ptr.hpp表達式px!= 0

我的意圖是指針未初始化。現在我知道這裏有很多答案可以「適合」我的問題。但正如我所說,我是一個初學者。說實話,我並不瞭解這些答案。請幫助我,並對我的問題給出明確而具體的答案。非常感謝你。

映入眼簾,馬可

+0

問題是什麼? – ronag

+0

「我的意圖是指針未初始化。」 - 這是什麼意思?你的意思是你期望它是「NULL」還是你的意思是你期望在指針中有一個有效的對象? – Caribou

+0

你已經定義了指向空白的指針變量。您還必須定義對象,並使指針指向對象 – balki

回答

2

你需要用new創建一個動態對象和分配結果指針到shared_ptr

egMevisPatientModel::Ptr_t v_PatientModel(
    std::make_shared<egMevisPatientModel>()); 
+3

其推薦使用make_shared 'egMevisPatientModel :: Ptr_t v_PatientModel = make_shared ()' – balki

+0

@balki:好點。編輯。 – Mankarse

+0

從技術上講,它不需要是堆分配對象。你也可以使用一個指針指向一個帶有「什麼都不做」刪除器的自動對象。 – pmr