cereal
A C++11 library for serialization
Public Member Functions | Public Attributes | List of all members
cereal::base_class< Base > Struct Template Reference

Casts a derived class to its non-virtual base class in a way that safely supports abstract classes. More...

#include </build/libcereal-m2n5tT/libcereal-1.1.2/include/cereal/types/base_class.hpp>

Inheritance diagram for cereal::base_class< Base >:
cereal::traits::detail::BaseCastBase

Public Member Functions

template<class Derived >
 base_class (Derived const *derived)
 

Public Attributes

Base * base_ptr
 

Detailed Description

template<class Base>
struct cereal::base_class< Base >

Casts a derived class to its non-virtual base class in a way that safely supports abstract classes.

This should be used in cases when a derived type needs to serialize its base type. This is better than directly using static_cast, as it allows for serialization of pure virtual (abstract) base classes.

See also
virtual_base_class
struct MyBase
{
int x;
virtual void foo() = 0;
template <class Archive>
void serialize( Archive & ar )
{
ar( x );
}
};
struct MyDerived : public MyBase //<-- Note non-virtual inheritance
{
int y;
virtual void foo() {};
template <class Archive>
void serialize( Archive & ar )
{
ar( y );
}
};

The documentation for this struct was generated from the following file: