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