我刚开始在一个新的代码库,每个类包含一个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