Tôi hiện đang cố khắc phục một số điểm yếu trong cơ sở mã của chúng tôi bằng cách giới thiệu việc sử dụng các con trỏ thông minh. Các cơ sở mã là rất lớn, và liên kết với nhau như một con nhện có một đến nhiều cà phê.Làm thế nào để giới thiệu boost :: shared_ptr vào một codebase C++ hiện có (lớn)?
Tôi đã tự hỏi nếu mọi người đã thử trước và cách tiếp cận của họ là gì.
Bước đầu tiên của tôi là vào các lớp typedef, như sau.
#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
}
Bây giờ tôi nhận ra điều này sẽ dẫn đến một sự giàu có của vùng biên dịch, những thứ như
CTObjectPtr i = NULL;
sẽ hoàn toàn bork khi con trỏ thông minh được kích hoạt.
Tôi đã tự hỏi nếu có bất kỳ điều gì tôi có thể làm ở giai đoạn đầu này để giảm khối lượng biên dịch lỗi, hoặc là tôi nghi ngờ chỉ cần thực hiện mọi thứ trên cơ sở từng trường hợp.
Cheers Giàu
Nhìn vào sự giàu có của mã Tôi bắt đầu nghĩ rằng bạn đúng. Cảm ơn bạn đã dừng tôi đi trên một đoạn mã ngu ngốc. – Rich