C++ 消息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

我有以下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 = 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&

是否有人可以为非西班牙语人士添加英语翻译?