【发布时间】:2010-10-20 01:25:19
【问题描述】:
我最近发现自己经常做的事情是声明与该类中的特定类相关的 typedef,即
class Lorem
{
typedef boost::shared_ptr<Lorem> ptr;
typedef std::vector<Lorem::ptr> vector;
//
// ...
//
};
然后在代码的其他地方使用这些类型:
Lorem::vector lorems;
Lorem::ptr lorem( new Lorem() );
lorems.push_back( lorem );
我喜欢它的原因:
- 它减少了类模板引入的噪音,
std::vector<Lorem>变成了Lorem::vector,等等。 - 它用作意图声明 - 在上面的示例中,Lorem 类旨在通过
boost::shared_ptr进行引用计数并存储在向量中。 - 它允许更改实现 - 即,如果 Lorem 需要在稍后阶段更改为侵入式引用计数(通过
boost::intrusive_ptr),那么这将对代码的影响最小。 - 我认为它看起来“更漂亮”并且可以说更容易阅读。
不喜欢的原因:
- 有时存在依赖问题 - 如果您想在另一个类中嵌入
Lorem::vector但只需要(或想要)转发声明 Lorem(而不是引入对其头文件的依赖),那么您最终不得不使用显式类型(例如boost::shared_ptr<Lorem>而不是Lorem::ptr),这有点不一致。 - 它可能不是很常见,因此更难理解?
我尝试对自己的编码风格保持客观,所以最好能获得一些其他的意见,这样我就可以稍微剖析一下我的想法。
【问题讨论】:
标签: c++ coding-style typedef