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

标签 c++ boost refactoring shared-ptr

我目前正尝试通过引入智能指针的使用来修复我们代码库中的一些弱点。代码库非常庞大,并且相互关联,就像一只喝过一对多咖啡的蜘蛛。

我想知道以前是否有人尝试过,他们的方法是什么。

我的第一步是 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;

启用智能指针时将完全崩溃。

我想知道在这个早期阶段我是否可以做些什么来减少编译错误的数量,还是我怀疑只是根据具体情况来处理。

干杯 丰富

最佳答案

不要这样做:我指的是 typedef。

大概旧代码中至少有一些delete 调用?在智能指针的情况下肯定会失败。

智能指针确定或不确定,即通过代码库追逐特定实例。让它工作,然后继续前进。祝你好运!

关于c++ - 如何将 boost::shared_ptr 引入现有(大型)C++ 代码库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2327552/

相关文章:

c++ - Boost.Asio 中的异常处理

c# - 在您看来,什么更易读 : ? ? (运算符)或使用 if's

java - 如何将 lambda 表达式重构为方法引用?

c++ - 在 cython 中为 cpp 类使用访问器语法

c++ - 在类成员中初始化变量是不好的做法吗?

c++ - C++中是否有堆类支持更改除头部以外的元素的优先级?

建议重构的 Python 工具

IntStack 的 C++ 递归打印函数

c++ - 即使在将新字符串复制到现有字符串后,旧包含也可用(在某些索引处)

c++ - rtree 是可索引断言