буферы протокола — PROTOBUFF INT64 проверяет ранее введенные данные Переполнение стека

message HealthOccurrenceCount
{
required int64 HealthID=1;
required int32 OccCount=2;
optional bytes wci=3;
}

Я хотел бы добавить данные на основе HealthID; Если HealthID затем, вместо добавления новой записи, программа должна просто увеличить существующую запись OccCount,

HealthOccurrenceCount objHelthOccCount;
if(objHelthOccCount.healthid() == healthID) // Is this right or do I need to iterate all the nodes?
{
occCount++;
objHelthOccCount.set_occcount(occCount);
}
else
occCount = 1;

Этот код правильный или я должен конвертировать HealthID в строку?

Сгенерированный код:

// required int64 HealthID = 1;
inline bool has_healthid() const;
inline void clear_healthid();
static const int kHealthIDFieldNumber = 1;
inline ::google::protobuf::int64 healthid() const;
inline void set_healthid(::google::protobuf::int64 value);

0

Решение

Согласно доктор для каждого единственного (обязательного или необязательного) поля есть методы has_, которые возвращают true, если это поле было установлено.

Ваш код будет выглядеть примерно так:

        HealthOccurrenceCount objHelthOccCount;
if(objHelthOccCount.has_healthid())
{
occCount++;
objHelthOccCount.set_occcount(occCount);
}
else
occCount = 1;
0

Другие решения


По вопросам рекламы [email protected]