Я только что приступил к буферам протокола Google. Кажется, это решение для используемого мной программного обеспечения на C++. Проблема в том, что я не могу найти что-либо в отношении типов векторов. В документации упоминается repeat_types, но я не могу найти что-либо.Как написать эти классы с помощью протобуфа Google?
Предположим, я это набор классов:
class UnifiedBinaryHeader
{
public:
UnifiedBinaryHeader();
void Serialize(std::ostream& output) const;
void Deserialize(std::istream& input);
private:
wxString m_name;
wxDateTime m_time;
};
struct UnifiedBinaryRow
{
wxDateTime date;
float value;
UnifiedBinaryRow()
{
value= 0;
}
void Serialize(std::ostream& output) const;
void Deserialize(std::istream& input);
};
class UnifiedBinaryRowCollection
{
private:
typedef std::vector<UnifiedBinaryRow> UnifiedBinaryRowVector;
public:
typedef UnifiedBinaryRowVector::iterator iterator;
typedef UnifiedBinaryRowVector::const_iterator const_iterator;
UnifiedBinaryRowCollection();
iterator begin();
const_iterator begin() const;
iterator end();
const_iterator end() const;
UnifiedBinaryRowCollection& AddRow(const UnifiedBinaryRow& row);
size_t NumRows() const;
private:
UnifiedBinaryRowVector m_rows;
};
class UnifiedBinaryFormat
{
public:
UnifiedBinaryFormat();
UnifiedBinaryHeader& Header();
const UnifiedBinaryHeader& Header() const;
UnifiedBinaryFormat& Header(UnifiedBinaryHeader& header);
UnifiedBinaryRowCollection& Rows();
const UnifiedBinaryRowCollection& Rows() const;
UnifiedBinaryFormat& Rows(const UnifiedBinaryRowCollection& rows);
void Serialize(std::ostream& output) const;
void Deserialize(std::istream& input);
private:
UnifiedBinaryHeader m_header;
UnifiedBinaryRowCollection m_rows;
};
Как я могу написать файл .proto для этих классов, видя, как я использую много членов, которые являются переносчиками. Любая помощь в «переносе» этих классов в файл .proto, который я могу использовать, будет очень оценена.
Хорошо, я думаю, я понимаю, что вы говорите (я подозревал, как много при размещении моих занятий). Однако, если вы возьмете «поведение» (например, сериализацию/десериализацию и т. Д.) Из вышеперечисленных классов, я уверен, вы согласитесь, что они просто «контейнеры». Затем возникает вопрос о том, как я могу «переносить» класс C++, который содержит вектор других классов C++ (которые могут быть вложенными) в файл .proto? –
Вот учебник C++: http://code.google.com/intl/fr/apis/protocolbuffers/docs/cpptutorial.html, вы можете отметить 2 вещи: вполне возможно вложить сообщения друг в друга, а «повторить 'keyword позволяет эмулировать поведение контейнеров. –
Я снова прочитаю документы и посмотрю, смогу ли я получить быстрый пример для работы. Кстати, –