如何防止使用cpp解除引用

时间:2015-05-11 09:59:26

标签: c++ pointers

我在cpp文件中有以下代码,有太多的解引用来到这里,有人可以建议我该怎么做才能防止这种情况发生。

        aObj* bObj = NULL;
        bObj = getG()->getO(bObjId);
        AbstractionType eAT= bObj->GetAT();
        long nObjType = bObj->GetOT()

1 个答案:

答案 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对象,请考虑将其存储在deletestd::unique_ptr<>而不是std::shared_ptr<> - 这样你就可以确定aObj* - 即使程序&#34;试图规避&#34; delete因异常而导致deletereturnbreak等。

如果您根本不需要指针,则可以直接创建引用:

goto