相关疑难解决方法(0)

C++中的内部typedef - 好风格还是坏风格?

我最近发现自己经常做的事情是声明与该类中的特定类相关的typedef,即

class Lorem
{
    typedef boost::shared_ptr<Lorem> ptr;
    typedef std::vector<Lorem::ptr>  vector;

//
// ...
//
};
Run Code Online (Sandbox Code Playgroud)

然后在代码中的其他地方使用这些类型:

Lorem::vector lorems;
Lorem::ptr    lorem( new Lorem() );

lorems.push_back( lorem );
Run Code Online (Sandbox Code Playgroud)

我喜欢它的原因:

  • 它减少了类模板引入的噪音,std::vector<Lorem>变成了Lorem::vector等等.
  • 它用作意图陈述 - 在上面的示例中,Lorem类旨在通过boost::shared_ptr向量计数并存储在向量中.
  • 它允许实现改变 - 即如果Lorem需要boost::intrusive_ptr在稍后阶段被改变为侵入式引用计数(via ),那么这将对代码产生最小的影响.
  • 我认为它看起来"更漂亮",可以说更容易阅读.

我不喜欢它的原因:

  • 有时依赖性问题 - 如果你想Lorem::vector在另一个类中嵌入,但只需要(或想要)转发声明Lorem(而不是引入对其头文件的依赖),那么你最终必须使用显式类型(例如boost::shared_ptr<Lorem>而不是Lorem::ptr),这有点不一致.
  • 它可能不是很常见,因此难以理解?

我试着对我的编码风格保持客观,所以最好能得到一些其他意见,这样我就可以稍微剖析一下我的想法.

c++ coding-style typedef

168
推荐指数
4
解决办法
8万
查看次数

标签 统计

c++ ×1

coding-style ×1

typedef ×1