提问人:mariolu 提问时间:10/12/2021 更新时间:10/20/2021 访问量:275
在 Google proto 中 mulit netsting '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。我以为堆栈上存在对象。 object 包括堆栈上的对象。因为我想改变内部对象。所以我用设置.Response
Response
RecommendInfo
items
RecommendInfo
mutable_vec_item()
items
我尝试
*(recom_response.mutable_recominfo()->mutable_vecitem()) = {items.begin(), items.end()};
代码工作并打印完整的对象,包括 .RecommendInfo
vec_item
我无法解释清楚。当我试图改变时,它似乎是错误的。但是,对象不是在堆栈上吗?我只想修改.recom_response.recominfo()
RecommendInfo
vec_item
答:
1赞
user4442671
10/12/2021
#1
修改修改它所属的。vecitem
RecommendInfo
所以为了修改 的内容,你必须对一个可修改的(又名可变的)进行操作。这就是为什么你必须使用而不是 .vecitem
RecommendInfo
mutable_recominfo()
recominfo()
评论