I’m trying to serialize Eigen’s matrix. So that I can serialize a more complex object.
I’m using Matrix as a base class and include the serialization in the derived class. I’m confused on how to address Matrix.data(), which returns a c-style array (if i’m correct).
This is my attempt:
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
template < class TEigenMatrix>
class VariableType : public TEigenMatrix {
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & this.data();
}
public:
};
I would like to use it as a “wrapper” :
VariableType<Matrix<double,3,1>> serializableVector;
in place of
Matrix<double,3,1> vector;
By placing the following free function into your compilation unit, you effectively make Boost.Serialization aware of how to serialize Eigen types:
In the example you gave, you should then be able to do (untested):
Have a look at my previous answer on serialization of Eigen types using Boost.Serialization for a more detailed example.