| cereal::base_class< Base >(3) | Library Functions Manual | cereal::base_class< Base >(3) |
NAME
cereal::base_class< Base > - Casts a derived class to its non-virtual base class in a way that safely supports abstract classes.
SYNOPSIS
#include </home/build/include/cereal/types/base_class.hpp>
Inherits 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.
This also automatically registers polymorphic relation between the base and derived class, assuming they are indeed polymorphic. Note this is not the same as polymorphic type registration. For more information see the documentation on polymorphism. If using a polymorphic class, be sure to include support for polymorphism (cereal/types/polymorphic.hpp).
See also
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( cereal::base_class<MyBase>(this) );
ar( y );
}
};
Author
Generated automatically by Doxygen for cereal from the source code.
| Sat Oct 10 2026 08:08:15 | cereal |