私は現在、スマートポインターの使用を導入することにより、コードベースのいくつかの弱点を修正しようとしています。コードベースは非常に大きく、1対多のコーヒーを飲んだクモのように相互に関連しています。
人々が以前に試したことがあるのか、そして彼らのアプローチは何だったのかと私は思っていました。
私の最初のステップは、次のように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;
スマートポインタが有効になっていると、完全に失敗します。
コンパイルエラーの量を減らすために、この早い段階で何かできることがあるのだろうか、それともケースバイケースで物事をとっているのではないかと思っていました。
乾杯リッチ