Emi*_*ier 46 c++ boost naming-conventions shared-ptr
我在typedef的boost :: shared_ptr模板的命名约定之间翻转.例如:
typedef boost::shared_ptr<Foo> FooPtr;
Run Code Online (Sandbox Code Playgroud)
在制定一项公约之前,我想看看其他人使用什么.你的约定是什么?
编辑:
对于那些在Foo中嵌入typedef的人来说,Foo现在"意识到"它将如何被传递并不会让你烦恼吗?它似乎打破了封装.这个怎么样:
class Foo
{
public:
typedef std::vector<Foo> Vector
};
Run Code Online (Sandbox Code Playgroud)
你现在不会这样做,对吗?:-)
Len*_*mel 28
我也想为这个老问题添加一些选项,即使它们可能引起很大争议......
与OldPeculier的答案类似,我喜欢尽可能接近标准指针的短类型名称.
在一个shared_pointer几乎无处不在的项目中,我用过
typedef boost::shared_ptr<Foo> Foo_;
// usage examples:
Foo* myFoo0;
Foo_ myFoo1;
Run Code Online (Sandbox Code Playgroud)
我利用了三件事:
Foo* myFoo1;有Foo *myFoo1;几个原因,它与之匹配得很好Foo_ myFoo2.当需要typedef用于不同类型的智能指针时,我会选择
typedef shared_ptr<Foo> Foo_S;
typedef weak_ptr<Foo> Foo_W;
typedef unique_ptr<Foo> Foo_U;
// usage examples:
Foo* myFoo2;
Foo_S myFoo3;
Foo_W myFoo4;
Foo_U myFoo5;
Run Code Online (Sandbox Code Playgroud)
随着标准和编译器实现中不断增加的Unicode支持,我很想尝试以下语法,假设这些星形字符将被视为类型标识符的常规部分.当然,只有所有参与的开发人员都有一个方便的文本输入方法,这才是实用的:
typedef shared_ptr<Foo> Foo?;
typedef weak_ptr<Foo> Foo?;
typedef unique_ptr<Foo> Foo?;
// usage examples:
Foo* myFoo6;
Foo? myFoo7;
Foo? myFoo8;
Foo? myFoo9;
Run Code Online (Sandbox Code Playgroud)
(一个快速测试表明,这实际上并不起作用,至少在我的构建环境中.但同样的情况也是如此Foo_ä.)
pdu*_*sen 27
答:不要这样做.这对你和其他人来说都很方便.说出你的意思.
Jam*_*lis 15
我的偏好:
class Foo
{
public:
typedef boost::shared_ptr<Foo> SharedPointer;
};
Run Code Online (Sandbox Code Playgroud)
公正的问题FooPtr是你可能有不同类型的指针(例如,weak_ptrs).我也不太关心缩写,但这完全是另一回事.
就个人而言,在我负责的代码中,您通常会看到FooPtr typedef在相同的命名空间范围内,因为Foo 和 Foo将包含与FooPtr相同类型的通用名称"SmartPtr"typedef.拥有FooPtr可以轻松实现非详细的手动操作.具有'SmartPtr'的嵌套typedef或一些quivalent允许在模板,宏等中轻松通用,而无需知道智能指针的实际类型.
另外,我建议在这个问题上添加一个"主观"标签.
| 归档时间: |
|
| 查看次数: |
21972 次 |
| 最近记录: |