Я новичок в protobuf, и я начал рассматривать следующий тривиальный пример
message Entry {
required int32 id = 1;
}
используется кодом С++
#include <iostream>
#include "example.pb.h"
int main() {
std::string mySerialized;
{
Entry myEntry;
std::cout << "Serialization succesfull "
<< myEntry.SerializeToString(&mySerialized) << std::endl;
std::cout << mySerialized.size() << std::endl;
}
Entry myEntry;
std::cout << "Deserialization successfull "
<< myEntry.ParseFromString(mySerialized) << std::endl;
}
Даже если поле «id» является обязательным, поскольку оно не задано, размер буфера сериализации равен 0 (??).
Когда я десериализую сообщение, возникает ошибка:
[libprotobuf ERROR google/protobuf/message_lite.cc:123] Can't parse message of type "Entry" because it is missing required fields: id
Это нормальное поведение?
Франческо
ps- Если я инициализирую "id" значением 0, поведение будет другим
pps — функция SerializeToString
возвращает true, ParseFromString
возвращает false