How to set a C++ std::vector to OAT++ Vector

816 Views Asked by At

I get a matrix data (float *) from a device, I can convert it to std::vector, and I want to return the data back to callers.

I define a DTO as

class TempMatrixDto : public oatpp::DTO{

  DTO_INIT(TempMatrixDto, DTO)

  DTO_FIELD(Object<MeasureDto>, measureParm, "parm");
  DTO_FIELD(Vector<Float32>, MatrixData, "MatrixData");
};

In application code:

  auto tempMatrix = TempMatrixDto::createShared();
  tempMatrix->measureParm=xxxx;

How can I set a std::vector or a array (float *) to tempMatrix->MatrixData?

Thank you.

1

There are 1 best solutions below

0
lganzzzo On

If you have oatpp::Vector<oatpp::Float32> and std::vector<float> then as for Oat++ 1.3.0 you have to manually fill in elements in oatpp::Vector<oatpp::Float32>

auto tempMatrix = TempMatrixDto::createShared();
tempMatrix->MatrixData = {}; // init empty vector. Otherwise it will be null

std::vector<float> values({1.0, 2.0, 3.0});

for(auto& v : values) {
  tempMatrix->MatrixData->push_back(v);
}