我目前正试图通过引入智能指针来解决代码库中的一些弱点.代码库非常大,并且像一只拥有一对多咖啡的蜘蛛相互关联.
我想知道人们是否曾尝试过以前的做法以及他们的做法是什么.
我的第一步是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.
我想知道在这个早期阶段是否有任何我可以做的事情来减少编译错误的数量,或者是因为我怀疑只是根据具体情况进行处理.
干杯
丰富