如何在 C++ 源代码中正确设置 Thrift 结构中的字段?
How do I set fields in Thrift struct properly in C++ sources?
我注意到在我的 thrift 结构 MyThriftStruct
的生成的 C++ class MyThriftStruct
中有一个名为 __set_FIELD
的方法。调用此方法会将属性 MyThriftStruct.__is_set.FIELD
设置为 true,告诉结构体此字段已设置。
我还注意到,在 official tutorial 中,他们通过直接复制值来设置 thrift 结构的字段:
MyThriftStruct.FIELD = val;
第一种方法看起来很难看,但后一种方法没有改变 __isset
标志。那么在C++中设置thrift struct的字段应该用哪一个呢?
这取决于:对于 required
字段或 default
(既不是必需的也不是可选的)字段 MyThriftStruct.FIELD = val;
就足够了。
set_FIELD
仅对可选字段是必需的(或需要手动修改 __isset
结构字段以确保可选字段序列化)
我注意到在我的 thrift 结构 MyThriftStruct
的生成的 C++ class MyThriftStruct
中有一个名为 __set_FIELD
的方法。调用此方法会将属性 MyThriftStruct.__is_set.FIELD
设置为 true,告诉结构体此字段已设置。
我还注意到,在 official tutorial 中,他们通过直接复制值来设置 thrift 结构的字段:
MyThriftStruct.FIELD = val;
第一种方法看起来很难看,但后一种方法没有改变 __isset
标志。那么在C++中设置thrift struct的字段应该用哪一个呢?
这取决于:对于 required
字段或 default
(既不是必需的也不是可选的)字段 MyThriftStruct.FIELD = val;
就足够了。
set_FIELD
仅对可选字段是必需的(或需要手动修改 __isset
结构字段以确保可选字段序列化)