saide_a Ответов: 1

Ошибка при сохранении и загрузке данных в структурах данных очереди и стека с помощью библиотеки boost


Я новичок в использовании библиотеки сериализации boost.
Я хочу сохранять и загружать данные в структуры STL и из них с помощью text_iarchive и text_oarchive.
Для этого я использовал код ниже:
mystruct test;
test.initial();
{
    std::ofstream ofs("filename.dat");
    boost::archive::text_oarchive ar(ofs);
    ar & test;
}
{
    std::ifstream ifs("filename.dat");
    boost::archive::text_iarchive ar(ifs);
    mystruct restored;
    ar & restored;
}


Что я уже пробовал:

На карте, списке, деке, наборе и векторе нет никаких проблем, но на очереди и стеке я получаю следующие ошибки:
ошибка: нет подходящей функции для вызова 'сохранить(увеличить::архив::text_oarchive&амп;, константные функции std::deque будет &ГТ;&амп;, константный беззнаковый тип int&ампер;)'
ошибка: нет подходящей функции для вызова 'нагрузкой(при разгоне::архив::text_iarchive&амп;, с std::deque будет &ГТ;&амп;, константный беззнаковый тип int&ампер;)'
Как я могу решить эту проблему?

Richard MacCutchan

Где возникают эти сообщения об ошибках?

CPallini

Включили ли вы соответствующие заголовки (например, "boost/сериализация/stack.hpp")?

1 Ответов

Рейтинг:
10

saide_a

вчера я узнал кое-что первым, когда я использую cout для печати моей структуры, она работает нормально. но когда я хочу читать и писать из файла, это происходит, эта проблема возникает только с использованием стека и очереди. Во-вторых, раньше я использовал заголовки для сериализации в основной функции, но когда я использую эти заголовки для своего класса очереди и стека, проблема решается. он заминирован !

когда я использовал этот порядок заголовка эти ошибки появились:

#include <boost/serialization/vector.hpp>
#include <boost/serialization/set.hpp>
#include <boost/serialization/map.hpp>
#include <boost/serialization/list.hpp>
#include <boost/serialization/queue.hpp>
#include <boost/serialization/stack.hpp>
#include <boost/serialization/deque.hpp>


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

#include <boost/serialization/vector.hpp>
#include <boost/serialization/set.hpp>
#include <boost/serialization/map.hpp>
#include <boost/serialization/list.hpp>
#include <boost/serialization/deque.hpp>
#include <boost/serialization/queue.hpp>
#include <boost/serialization/stack.hpp>