以下函数将我在代码中使用的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}}
答案 0 :(得分:0)
我会返回它,而不是传入参数。我假设shared_array
只是复制指针,所以它很便宜,更好地说明你在做什么。无论如何都应该省略副本。