我的设计中有类(结构)成员的三种基数。
我已将它们映射到以下声明为类(结构)成员
class Foo {
ExactlyOnce exactlyOnce;
std::unique_ptr<ZeroOrOnce> zeroOrOnce;
std::list<std::shared_ptr<ZeroOrMore>> zeroOrMore;
};
我打算在整个软件包中概括这个模式,这种方法是否正确或者它有一些错误w.r.t.会员基数?
答案 0 :(得分:2)
对于zeroOrMore
基数,按值存储元素,而不是按指针存储元素。存储指针只作为最后的手段,如果没有别的办法。
答案 1 :(得分:1)
看起来很好。
考虑以下因素:
将boost::optional
用于ZeroOrOne
(如果您已经使用了提升);由于API针对此进行了优化,因此其背后的意图更为明确。
使用std::vector<T>
代替std::list<std::shared_ptr<T>>
ZeroOrMore
。在你拥有大型/昂贵的物体并进行正面和随机插入的情况之外,矢量往往更有效。