通过引用传递boost智能指针

时间:2013-03-11 14:50:34

标签: c++ boost c++98

以下函数将我在代码中使用的Container转换为c接口所需的boost::shared_array<CValues>&。我必须将CContainer getCContainer(const Container& container, boost::shared_array<CValues>& values) { CContainer cContainer; cContainer.type = boost::apply_visitor(CTypeGetter(), container); cContainer.nrOfValues = boost::apply_visitor(ContainerSizeGetter(), container); values = boost::shared_array<CValues>(new CValues[cContainer.nrOfValues]); boost::apply_visitor(ValueSetter(values), container); cContainer.values = values.get(); return cContainer; } void store(Container& container) { boost::shared_array<CValue> values; CContainer cContainer = getCContainer(container, values); cSave(cContainer); } 传递给此函数,因为我需要保持其关联的内存,直到我使用cContainer。有没有更好的方法呢?

{{1}}

1 个答案:

答案 0 :(得分:0)

我会返回它,而不是传入参数。我假设shared_array只是复制指针,所以它很便宜,更好地说明你在做什么。无论如何都应该省略副本。