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-B5G4p0/libcereal-1.1.2/include/cereal/types/base_class.hpp>`

Inheritance diagram for cereal::base_class< Base >:

## 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( cereal::base_class<MyBase>(this) );
ar( y );
}
};

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

- /build/libcereal-B5G4p0/libcereal-1.1.2/include/cereal/types/base_class.hpp