我在cpp文件中有以下代码,有太多的解引用来到这里,有人可以建议我该怎么做才能防止这种情况发生。
aObj* bObj = NULL;
bObj = getG()->getO(bObjId);
AbstractionType eAT= bObj->GetAT();
long nObjType = bObj->GetOT()
答案 0 :(得分:0)
一个选项是创建对指针跟踪的对象的引用:
/* 0 */
{
"_id" : ObjectId("5550866d9cd8fa39c7971e2e"),
"id" : 1,
"url" : "mysite.com",
"views" : [
{
"ip" : "1.1.1.1",
"date" : ISODate("2015-03-13T13:34:40.000Z")
},
{
"ip" : "2.2.2.2",
"date" : ISODate("2015-03-13T13:34:40.000Z")
},
{
"ip" : "1.1.1.1",
"date" : ISODate("2015-02-13T13:34:40.000Z")
},
{
"ip" : "1.1.1.1",
"date" : ISODate("2015-02-13T13:34:40.000Z")
}
]
}
如果以后需要指针(aObj* p_bObj = getG()->getO(bObjId);
aObj& bObj = *p_bObj; // <-- once for convenience
AbstractionType eAT= bObj.GetAT(); // use .-notation however-many times
long nObjType = bObj.GetOT();
以上)到p_bObj
对象,请考虑将其存储在delete
或std::unique_ptr<>
而不是std::shared_ptr<>
- 这样你就可以确定aObj*
- 即使程序&#34;试图规避&#34; delete
因异常而导致delete
,return
,break
等。
如果您根本不需要指针,则可以直接创建引用:
goto