0

以下函数将Container我在代码中使用的 a 转换为 ac 接口所需的。我必须将 a 传递boost::shared_array<CValues>&给此函数,因为我需要保持其关联的内存处于活动状态,直到我使用 cContainer。有没有更好的方法来做到这一点?

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);
}
4

1 回答 1

0

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

于 2013-03-11T15:02:33.857 回答