如何将boost :: shared_ptr引入现有(大型)C代码库?

前端之家收集整理的这篇文章主要介绍了如何将boost :: shared_ptr引入现有(大型)C代码库?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正试图通过引入智能指针来解决代码库中的一些弱点.代码库非常大,并且像一只拥有一对多咖啡的蜘蛛相互关联.

我想知道人们是否曾尝试过以前的做法以及他们的做法是什么.

我的第一步是typedef类,如下所示.

#ifndef USE_SMART_POINTERS
    #define USE_SMART_POINTERS 0
#endif

#if USE_SMART_POINTERS == 1
    #include <boost/smart_ptr.hpp>
#endif


namespace ProductX
{
    // forward decleration
    class CTObject;


    //typedefs
    #if USE_SMART_POINTERS == 1
        typedef boost::shared_ptr<CTObject> CTObjectPtr;
    #else
        typedef CTObject* CObjectPtr;
    #endif
}

现在我意识到这将导致丰富的编译领域,比如

CTObjectPtr i = NULL;

当智能指针启用时,将完全bork.

我想知道在这个早期阶段是否有任何我可以做的事情来减少编译错误数量,或者是因为我怀疑只是根据具体情况进行处理.

干杯
丰富

解决方法

不要这样做:我的意思是typedef.

据推测旧代码至少有一些删除调用吗?在智能指针的情况下肯定会失败.

智能指针是否有某些东西,即通过代码库追逐特定实例.让它工作,然后继续前进.祝好运!

原文链接:https://www.f2er.com/c/116680.html

猜你在找的C&C++相关文章