我想有条件地删除成员消息的协议缓冲消息。该消息可能已经或可能未在舞台上创建。
有没有人知道正确的方法来有效地做到这一点?
这就是我所拥有的:
void erase_nested(testing::Exception& emsg)
{
if(emsg.GetArena()) {
// discard pointer
emsg.unsafe_arena_release_nested();
}
else {
delete emsg.release_nested();
}
}
我在文档中找不到任何明确的内容。
供参考,原型文件:
syntax = "proto3";
package testing;
option cc_generic_services = true;
option cc_enable_arenas = true;
/// Carry a nested exception across a comms link
message Exception
{
string name = 1;
string what = 2;
Exception nested = 3;
}