oat++ :将 DTO 放入 DTO 列表中
oat++ : put DTO in a list of DTOs
我正在尝试从多个 DTO 创建一个大的 DTO,但是我很难将我的 DTO 放入列表中。
我有两个 DTO :
class TypeDocDto : public oatpp::DTO
{
DTO_INIT(TypeDocDto, DTO)
DTO_FIELD(Int32, code);
DTO_FIELD(String, desciption);
};
class DocumentDto : public oatpp::DTO
{
DTO_INIT(DocumentDto, DTO)
DTO_FIELD(Int32, docNumber);
DTO_FIELD(Int32, typeDocNb);
DTO_FIELD(List<Object<TypeDocDto>>, typeDocs);
};
这里的想法是一个文档对象可以携带多个“TypeDoc”对象。
所以我尝试创建一个 TypeDocDto 列表,然后将它添加到我的 DocumentDto 对象中。
auto dtoDoc = DocumentDto::createShared();
dtoDoc->docNumber = 0; //That value is whatever for now.
dtoDoc->typeDocNb = 3;
oatpp::List<oatpp::Object<TypeDocDto>> typeDocsList = {};
for (int i = 0; i < dtoDoc->typeDocNb; i++)
{
auto typedocDto = TypeDocDto::createShared();
typedocDto->code = i;
typedocDto->desciption = "foo";
typeDocsList->emplace(typeDocsList->end(), typedocDto);
}
dtoDoc->typeDocs = typeDocsList;
但我无法将任何内容放入我的 typeDocsList 变量中。我添加的对象似乎总是NULL。
我做错了什么?
找到问题出处。
看起来 oat++ 在声明列表对象时有点挑剔。
//*oatpp::List<oatpp::Object<TypeDocDto>> typeDocsList = {}* should become :
oatpp::List<oatpp::Object<TypeDocDto>> typeDocsList({});
似乎需要这种精确的语法。之后,我的代码按预期工作。
我正在尝试从多个 DTO 创建一个大的 DTO,但是我很难将我的 DTO 放入列表中。
我有两个 DTO :
class TypeDocDto : public oatpp::DTO
{
DTO_INIT(TypeDocDto, DTO)
DTO_FIELD(Int32, code);
DTO_FIELD(String, desciption);
};
class DocumentDto : public oatpp::DTO
{
DTO_INIT(DocumentDto, DTO)
DTO_FIELD(Int32, docNumber);
DTO_FIELD(Int32, typeDocNb);
DTO_FIELD(List<Object<TypeDocDto>>, typeDocs);
};
这里的想法是一个文档对象可以携带多个“TypeDoc”对象。
所以我尝试创建一个 TypeDocDto 列表,然后将它添加到我的 DocumentDto 对象中。
auto dtoDoc = DocumentDto::createShared();
dtoDoc->docNumber = 0; //That value is whatever for now.
dtoDoc->typeDocNb = 3;
oatpp::List<oatpp::Object<TypeDocDto>> typeDocsList = {};
for (int i = 0; i < dtoDoc->typeDocNb; i++)
{
auto typedocDto = TypeDocDto::createShared();
typedocDto->code = i;
typedocDto->desciption = "foo";
typeDocsList->emplace(typeDocsList->end(), typedocDto);
}
dtoDoc->typeDocs = typeDocsList;
但我无法将任何内容放入我的 typeDocsList 变量中。我添加的对象似乎总是NULL。
我做错了什么?
找到问题出处。
看起来 oat++ 在声明列表对象时有点挑剔。
//*oatpp::List<oatpp::Object<TypeDocDto>> typeDocsList = {}* should become :
oatpp::List<oatpp::Object<TypeDocDto>> typeDocsList({});
似乎需要这种精确的语法。之后,我的代码按预期工作。