我最近发现自己经常做的事情是声明与该类中的特定类相关的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等等.boost::shared_ptr向量计数并存储在向量中.boost::intrusive_ptr在稍后阶段被改变为侵入式引用计数(via ),那么这将对代码产生最小的影响.我不喜欢它的原因:
Lorem::vector在另一个类中嵌入,但只需要(或想要)转发声明Lorem(而不是引入对其头文件的依赖),那么你最终必须使用显式类型(例如boost::shared_ptr<Lorem>而不是Lorem::ptr),这有点不一致.我试着对我的编码风格保持客观,所以最好能得到一些其他意见,这样我就可以稍微剖析一下我的想法.