【发布时间】:2011-02-12 15:08:51
【问题描述】:
我在 typedef'ing boost::shared_ptr 模板的命名约定之间来回切换。例如:
typedef boost::shared_ptr<Foo> FooPtr;
在确定约定之前,我想看看其他人使用什么。你的约定是什么?
编辑:
对于那些将typedef 嵌套在Foo 中的人,Foo 现在“知道”它是如何被传递的,你不会感到困扰吗?它似乎打破了封装。这个怎么样:
class Foo
{
public:
typedef std::vector<Foo> Vector;
};
你现在不会这样做,对吗? :-)
【问题讨论】:
-
补充这个问题,当你声明这样一个 typedef 时,人们如何管理标题包含?这不会导致每个人都必须包含 Foo.h(而不仅仅是说“class Foo;”),从而导致构建缓慢并可能导致循环依赖?
-
如果您使用工厂,我认为嵌套的 typedef 不会破坏封装。事实上,我会说在这种情况下它会改进封装,以防指针类型发生变化。
-
@RobNapier
#include "foo_ptr.hpp";-) -
@RobNapier 我调用宏
MYLIB_DECLARE_PTRS(Foo);来替换class Foo;。灵感来自convention used in Pixar's USD --- 我喜欢这个大会。
标签: c++ boost naming-conventions shared-ptr