Google proto 中的多嵌套 `mutable`
mulit netsting `mutable` in Google proto
我有proto文件,说的是,
message RecommendInfo{
repeated RecommendItem vec_item = 1;
}
message Response{
RecommendInfo recomInfo = 1;
}
我想生成类型 Response
的响应。
所以我使用下面的代码,
Response response;
*(recommendResponse.recominfo().mutable_vec_item()) = {items.begin(), items.end()};
LOG_INFO << response.DebugString();
但是有空 vecitem。我以为堆栈上存在 Response
个对象。 Response
个对象在堆栈中包含 RecommendInfo
个对象。因为我想在 RecommendInfo
对象中更改 items
。所以我用mutable_vec_item()
设置items
.
我试试
*(recom_response.mutable_recominfo()->mutable_vecitem()) = {items.begin(), items.end()};
代码有效并打印完整的 RecommendInfo
对象,包括 vec_item
.
我解释不清楚。当我尝试更改 recom_response.recominfo()
时,它似乎是错误的。但是,RecommendInfo
不是堆栈上的对象吗?而我只想修改 vec_item
.
修改vecitem
修改它所属的RecommendInfo
。
因此,为了修改 vecitem
的内容,您必须在可修改(也称为可变)RecommendInfo
上进行操作。这就是为什么你必须使用 mutable_recominfo()
而不是 recominfo()
.
我有proto文件,说的是,
message RecommendInfo{
repeated RecommendItem vec_item = 1;
}
message Response{
RecommendInfo recomInfo = 1;
}
我想生成类型 Response
的响应。
所以我使用下面的代码,
Response response;
*(recommendResponse.recominfo().mutable_vec_item()) = {items.begin(), items.end()};
LOG_INFO << response.DebugString();
但是有空 vecitem。我以为堆栈上存在 Response
个对象。 Response
个对象在堆栈中包含 RecommendInfo
个对象。因为我想在 RecommendInfo
对象中更改 items
。所以我用mutable_vec_item()
设置items
.
我试试
*(recom_response.mutable_recominfo()->mutable_vecitem()) = {items.begin(), items.end()};
代码有效并打印完整的 RecommendInfo
对象,包括 vec_item
.
我解释不清楚。当我尝试更改 recom_response.recominfo()
时,它似乎是错误的。但是,RecommendInfo
不是堆栈上的对象吗?而我只想修改 vec_item
.
修改vecitem
修改它所属的RecommendInfo
。
因此,为了修改 vecitem
的内容,您必须在可修改(也称为可变)RecommendInfo
上进行操作。这就是为什么你必须使用 mutable_recominfo()
而不是 recominfo()
.