更新:我用谷歌搜索并在代码中读取doxygen注释后设法让它工作.问题是我在使用resize()方法之前错过了演员,也没有std::ios::binary用于流.如果你想做类似的事情,最好检查Azoth的答案.
我正在尝试Eigen::Matrix使用Cereal 序列化类型.这就是我所拥有的(松散地基于https://gist.github.com/mtao/5798888和其中的类型cereal/types):
#include <cereal/cereal.hpp>
#include <cereal/archives/binary.hpp>
#include <Eigen/Dense>
#include <fstream>
namespace cereal
{
template <class Archive, class _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols> inline
typename std::enable_if<traits::is_output_serializable<BinaryData<_Scalar>, Archive>::value, void>::type
save(Archive & ar, Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> const & m)
{
int rows = m.rows();
int cols = m.cols();
ar(make_size_tag(static_cast<size_type>(rows * cols)));
ar(rows);
ar(cols);
ar(binary_data(m.data(), rows * cols * sizeof(_Scalar)));
}
template <class …Run Code Online (Sandbox Code Playgroud)