我剛開始在一個新的代碼庫,每個類包含一個shared_ptr的typedef(similar to this)一樣工作:typedef boost :: shared_ptr <MyJob> Ptr;或者將#define PTR的boost :: shared_ptr的
typedef boost::shared_ptr<MyClass> Ptr;
是節省打字的boost :: shared_ptr的唯一目的?
如果是這樣的話,是唯一的理由不這樣做
#define Ptr boost::shared_ptr
在一個共同的標頭的#define的普遍問題?然後,你可以這樣做:
Ptr<MyClass> myClass(new MyClass);
這是不超過
MyClass::Ptr myClass(new MyClass);
更多的輸入並保存在每類中的PTR定義。
一般而言,除非絕對必要,否則應避免使用宏,並在需要時非常小心地命名它們。 C++名稱可以包含在類,函數或命名空間範圍內,並且當在不同的上下文中使用相同的名稱時不會導致衝突。宏名稱嘔吐在每個範圍內,並且可以以完全意想不到的方式無形地更改代碼。 – 2010-06-16 12:25:55
當我看到boost :: shared_ptr時,我確切地知道它的作用。如果我在代碼中看到Ptr,我必須查看它的含義,並且可能在不同模塊中具有不同含義(因爲您的代碼中您的共同工作可能會有不同的定義)。保持代碼清晰並使用全名。 – 2010-06-16 18:12:32