boost :: сериализация производного класса из виртуальной базы без конструктора по умолчанию

Я пытаюсь сериализовать производный класс, где база не имеет конструктора по умолчанию. Что я делаю до сих пор:

struct Data {
int _value;
};

class Base;

namespace boost { namespace serialization {
template<typename Archive>
void save_construct_data(Archive&, const Base*, unsigned int);

template<typename Archive>
void load_construct_data(Archive&, Base*, unsigned int);
}}

class Base {
Data& _ref;
template<typename Archive>
void serialize(Archive&, unsigned int)
{}

friend class boost::serialization::access;
//friend load/save construct data, etc.
public:
Base(Data& ref) : _ref(ref) {}
};
BOOST_CLASS_TRACKING(Base, boost::serialization::track_always);

//implementation of load/save construct data, etc

class Derived : public virtual Base {
template<typename Archive>
void serialize(Archive& ar, unsigned int)
{
//save / load construct data NOT CALLED!
ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base);
}
//other methods, etc
};

Выше вызывается метод baseize () Base, который ничего не делает! Есть ли способ вызвать функции save_construct_data или load_construct_data из производного класса (без обхода механизма сериализации)? Весь смысл этого упражнения в том, чтобы отследить ячейки памяти базы.

Заранее спасибо.

1

Решение

Задача ещё не решена.

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector