簡體   English   中英

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

似乎需要這種精確的語法。 之后,我的代碼按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM