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