C++ 消息Protobuf中消息的设置字段
我有以下protobuf定义:C++ 消息Protobuf中消息的设置字段,c++,nested,protocol-buffers,C++,Nested,Protocol Buffers,我有以下protobuf定义: message CBMessage { required int32 type = 1; //defines the kind of message that we send optional RepoMessage repomessage = 2; message RepoMessage { optional int32 nodeid = 1; optional int32 timestampsec
message CBMessage {
required int32 type = 1; //defines the kind of message that we send
optional RepoMessage repomessage = 2;
message RepoMessage {
optional int32 nodeid = 1;
optional int32 timestampsec = 2;
optional int32 timestampmicrosec = 3;
}
}
您可以注意到,repomessage
字段是“外部”消息CBMessage
的字段
我想访问nodeid
字段(位于“内部”消息RepoMessage
)以修改此参数。因此,我创建了一个CBMessage对象:
CBTxMessages::CBMessage* cbmsg;
this->cbmsg = new CBTxMessages::CBMessage;
我试图以这种方式修改nodeid
字段:
this->cbmsg->repomessage().set_nodeid(message[0]);
然而,我在编译时遇到以下错误:
错误:pasar'const CBTxMessages::CBMessage_reposMessage'como el argumento'此'de'无效CBTxMessages::CBMessage_reposMessage::set_nodeid(google::protobuf::int32)'descarta los calificadores[-fpPermissive]
(错误是西班牙语,但我认为您可以理解)。可能的翻译是:
“void CBTxMessages::CBMessage_RepoMessage::set_nodeid(google::protobuf::int32)的'this'参数“丢弃限定符”)
我已经对其进行了调查,发现问题与以下事实有关:repomessage
字段返回(repomessage()
)的“基本getter”作为常量引用返回(因此无法直接修改),但我确实希望对其进行修改
我怎样才能解决这个问题
谢谢。代替
this->cbmsg->repomessage().set_nodeid(message[0]);
你需要
this->cbmsg->mutable_repomessage()->set_nodeid(message[0]);
直接设置
repomessage
字段repomessage()
将返回无法修改的const CBMessage\u repomessage&
。是否有人可以为非西班牙语人士添加英语翻译?