Protocol buffers 如何从重复类型protobuf创建对象
我要找的是一个返回重复字段消息的函数 我知道有Reflection::AddMessage,它具有我想要的返回类型,但我不想添加消息,只需返回该消息的对象即可 下面是我尝试执行的一个示例,假设我在.proto文件中有一条消息:Protocol buffers 如何从重复类型protobuf创建对象,protocol-buffers,Protocol Buffers,我要找的是一个返回重复字段消息的函数 我知道有Reflection::AddMessage,它具有我想要的返回类型,但我不想添加消息,只需返回该消息的对象即可 下面是我尝试执行的一个示例,假设我在.proto文件中有一条消息: message Bar{ uint32 t x = 1; uint64 t y = 2; } message Foo{ repeated Bar myMessage = 1; } 我正在使用反射来迭代Foo消息,我希望能够做到以下几点: Mes
message Bar{
uint32 t x = 1;
uint64 t y = 2;
}
message Foo{
repeated Bar myMessage = 1;
}
我正在使用反射来迭代Foo消息,我希望能够做到以下几点:
Message* Msg = createMessage(refl->FooMsg, FieldDesc)
我知道还有GetRepeatedMessage,但这需要索引。首先,当protobuf编译器生成用于编译的代码时,接口中会有一个访问器函数。这些函数是Myable NoMeOfO-Meo消息,返回整个重复字段,该字段是一个STD::C++中的vector,或者Mutable NoMeOfOi消息索引,它给出了指定的元素。 现在,若你们不想使用酒吧,那个么你们不需要太多
message ArrayOfBar
{
repeated Bar arrayOfBar = 0;
message Bar{
uint32 t x = 1;
uint64 t y = 2;
}
}
如果这就是你的想法,你也可以这样做
std::vector<Bar> arrayOfBars;
但由于Protobuf的内部细节,这个想法需要改进。这样的事情可能会发生一些不必要的行为