2013-01-10 52 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