0

Container次の関数は、コードで使用する a を、ac インターフェイスで必要な a に変換します。boost::shared_array<CValues>&cContainer を使用するまで関連付けられたメモリを維持する必要があるため、この関数に a を渡す必要があります。これを行うより良い方法はありますか?

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

パラメータを渡す代わりに、それを返します。a はポインターをコピーするだけであると想定しているshared_arrayため、安価であり、何をしているのかをよりよく示しています。とにかく、コピーは省略されるべきです。

于 2013-03-11T15:02:33.857 に答える