Как использовать сериальную сериализацию - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь выяснить, как работает сериализация Cereal, поэтому я прочитал документацию (в которой, как мне кажется, немного не хватает imo) и попытался воспроизвести там код, который у них есть:

#include <sstream>
#include <archives/binary.hpp>

struct MyData
{
  int x, y, z;

  // This method lets cereal know which data members to serialize
  template<class Archive>
  void serialize(Archive & archive)
  {
    archive( x, y, z ); // serialize things by passing them to the archive
  }
};

int main()
{
    std::stringstream ss; // any stream can be used

     {
       cereal::BinaryOutputArchive oarchive(ss); // Create an output archive

       MyData m1, m2, m3;
       oarchive(m1, m2, m3); // Write the data to the archive
     } // archive goes out of scope, ensuring all contents are flushed

     {
       cereal::BinaryInputArchive iarchive(ss); // Create an input archive

       MyData m1, m2, m3;
       iarchive(m1, m2, m3); // Read the data from the archive
     }

    return 0;
}

Iскопировал код непосредственно из документации Cereal, но я получаю сообщение об ошибке:

type 'cereal::BinaryInputArchive' does not provide a call operator

1 Ответ

0 голосов
/ 04 января 2019

Видимо, я не правильно включил библиотеки, которые решили проблему.

...