首页 > 解决方案 > 如何将所需的 protobuf 字段设置为其默认值?

问题描述

在 protobuf 2 / C++ 中,如何将必需的消息字段设置为其默认值?

标签: c++protocol-buffers

解决方案


您可以使用该Clear方法将字段重置为默认值:

message Msg {
    required int32 i = 1 [default = 10];
};

Msg msg;
msg.set_i(123);

msg.Clear(); // Set the field to default value: 10.

// Another way:
msg.clear_i();

但是,这将清除必填字段,即msg.has_i() == false。如果要设置它,还请执行以下操作:

msg.Clear();
msg.set_i(msg.i());

推荐阅读