可以为新创建的对象自动填充protobuffer默认值
can protobuffer auto fill default value for newly created object
我在使用google protobuf时遇到问题,我想创建一个具有默认属性值的对象:
message Obj {
required string id = 1[default=123];
}
序列化上述对象时:
string s;
Obj obj;
obj.SerializeToString(&s);
它抱怨:无法序列化,因为它缺少必需的字段id
doc表示,"默认"值用于从字符串解析obj,而不是序列化为字符串。
是否可以创建具有默认值的对象?
否,您不能为内存中的对象设置默认值。
默认值仅在反序列化时应用。如果字段丢失,required
会使读取器出错。因此CCD_ 2和CCD_。
如果你想设置内存中的默认值,可以创建一个工厂函数并使用它。
您不能序列化默认值,但可以将其设置为可选字段。这样,当您反序列化流时,您将获得一个缺少字段的对象,并且尝试获取该值将为您提供默认值。
相关文章:
- 使用动态实例化的对象填充矢量的快速方法
- C++ - 对象填充的复杂性
- 哪些值存储在对齐的结构/类对象的填充字节中
- 如何使用数据成员填充派生类的对象到基类的指针数组中
- 在运行时 c++ 更改用类对象填充的数组的大小
- 用于填充 Base 和派生对象的 shared_ptr 向量的函数模板
- 如何在文本文件中逐行读取并填充指向对象数组的指针
- 填充不同对象的矢量
- C++填充一个std::map创建不必要的对象
- 提升:创建对象并用线程填充矢量
- 使用相同的数据填充数组对象或使用指针
- 如何创建一个ifstream对象的数组,以及如何使用编号的文本文件填充该数组
- boost线程未填充通过引用传递的本地对象
- 填充对象的C++二维数组
- 当您有结构名称和字段值的列表时,是否可以以编程方式创建结构的对象并填充字段
- 从文件填充对象的向量
- VTK 定位摄像机以用对象填充视口
- 如何实例化 int 类型的数组对象并在 c++ 中填充它
- 如何在类中用不同类的对象填充向量
- 如何使用指针用对象填充矢量