У меня есть класс «генератор», который в основном создает свой подкласс. Чтобы использовать эту вещь, я просто подклассифицирую ее и передаю ей правильные параметры для построения объекта, который я хочу построить. Я хочу сериализовать эти вещи, и нет никаких оснований делать это для каждого подкласса, поскольку все данные находятся в базе. Вот что у меня есть пример:boost.serialization - бесплатная версия и реализация базового класса
#include <boost/serialization/serialization.hpp>
template < typename T >
struct test_base
{
// works...
//template < typename Archive >
//void serialize(Archive &, unsigned int const)
// {
//}
};
template < typename T >
void f(test_base<T> const&) {}
struct test_derived : test_base<int>
{
};
namespace boost { namespace serialization {
template < typename Archive, typename T >
void serialize(Archive &, test_base<T> &, unsigned int const)
{
}
}}
#include <boost/archive/binary_oarchive.hpp>
#include <sstream>
int main()
{
int x = 5;
test_derived d;
//boost::serialization::serialize(x, d, 54); // <- works.
std::ostringstream str;
boost::archive::binary_oarchive out(str);
out & d; // no worky.
}
Я хочу, чтобы бесплатная версия работала, если это возможно. Это?
Version above pukes up error about serialize, не являющийся членом test_derived.