2015-08-18 1 views
2

Я заметил, что есть метод с именем __set_FIELD в сгенерированном классе C++ MyThriftStruct моей структуры бережливости MyThriftStruct. Вызов этого метода устанавливает атрибут MyThriftStruct.__is_set.FIELD true, который сообщает структуре, что это поле было установлено.Как установить поля в структуре Thrift правильно в источниках C++?

Я также заметил, что в official tutorial они устанавливают поданную структуру бережливости путем непосредственного копирования значения:

MyThriftStruct.FIELD = val; 

Первый метод кажется некрасивым, но последний один не изменил __isset флага. Итак, какой из них я должен использовать для установки поля бережливой структуры на C++?

ответ

0

зависит от: за required полей или default (ни обязательный, ни дополнительный) полей MyThriftStruct.FIELD = val; достаточно.

set_FIELD требуется только для дополнительных полей (или ручной модификации __isset структуры полей, необходимых для обеспечения дополнительного поля сериализации)