Ric*_*ich 6 c++ refactoring boost 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
}
Run Code Online (Sandbox Code Playgroud)
现在我意识到这将导致丰富的编译领域,比如
CTObjectPtr i = NULL;
Run Code Online (Sandbox Code Playgroud)
当智能指针启用时,将完全bork.
我想知道在这个早期阶段是否有任何我可以做的事情来减少编译错误的数量,或者是因为我怀疑只是根据具体情况进行处理.
干杯里奇
不要这样做:我的意思是typedef.
据推测旧代码至少有一些删除调用吗?在智能指针的情况下肯定会失败.
智能指针是否有某些东西,即通过代码库追逐特定实例.让它工作,然后继续前进.祝好运!
您可以使用Boehm-Demers-Weiser垃圾收集器而不是尝试在任何地方引入智能指针,并保持代码库完好无损.
它还将处理循环引用.
归档时间: |
|
查看次数: |
382 次 |
最近记录: |