В настоящее время я пытаюсь исправить несколько недостатков в нашей базе кода, введя использование интеллектуальных указателей. Кодовая база очень большая и взаимосвязана, как паук, у которого было много кофе.Как внедрить 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 когда умные указатели включены.
Мне было интересно, есть ли что-нибудь, что я мог бы сделать на этом раннем этапе, чтобы уменьшить массу ошибок компиляции, или это, как я подозреваю, просто беру вещи в каждом конкретном случае.
Приветствие Rich
Глядя на богатство кода, я начинаю думать, что вы правы. Спасибо, что остановили меня на безумном отборе кода. – Rich