ошибка C2039: ‘serialize’: не является членом ‘boost :: units :: amount & lt; boost :: units :: si :: electric_potential, double & gt;’

Как я могу сериализовать карту с типом electric_potential и double ??
В моем коде я поместил эти заголовки:

#include <boost/serialization/complex.hpp>
#include <boost/serialization/map.hpp>
#include <boost/units/physical_dimensions/electric_potential.hpp>

template<class Archive, class T>
static void serialize( Archive & ar, T & t, const unsigned int file_version ){
t.serialize(ar, file_version);
}
extern "C++" class Data_substation_AC2 : public Data_OG
{
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version) {
ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Data_OG);
ar & BOOST_SERIALIZATION_NVP(_primary_voltage);
ar & BOOST_SERIALIZATION_NVP(_secondary_voltage);
ar & BOOST_SERIALIZATION_NVP(_impedance1);
ar & BOOST_SERIALIZATION_NVP(_impedance2);
ar & BOOST_SERIALIZATION_NVP(_location);
}
std::string                                                   _name;
bu::quantity<si::electric_potential>                          _primary_voltage;
bu::quantity<si::electric_potential>                          _secondary_voltage;
bu::quantity<si::resistance, std::complex<double>>            _impedance1;
bu::quantity<si::resistance, std::complex<double>>            _impedance2;
Data_location                                                 _location;

Я перепробовал все заголовки, но все же у меня есть эта ошибка:

error C2039: 'serialize' : is not a member of 'boost::units::
quantity<boost::units::si::electric_potential,double>'

Я ищу самый простой способ решить эту проблему.
Спасибо
На этой картинке код, когда я использую тип electric_potential

0

Решение

Я не понимаю, в чем проблема. Тот факт, что вы не показываете полный, автономный образец, означает, что я не могу помочь вам осознать проблему, кроме как показать, что я сделал, чтобы она работала:

Жить на Колиру

#include <boost/archive/xml_oarchive.hpp>
#include <boost/serialization/base_object.hpp>
#include <boost/serialization/complex.hpp>
#include <boost/serialization/map.hpp>
#include <boost/serialization/serialization.hpp>
#include <boost/serialization/string.hpp>
#include <boost/units/base_unit.hpp>
#include <boost/units/io.hpp>
#include <boost/units/physical_dimensions/electric_potential.hpp>
#include <boost/units/quantity.hpp>
#include <boost/units/systems/si.hpp>
#include <boost/units/unit.hpp>

namespace bu = boost::units;
namespace si = bu::si;

//template<class Archive, class T>
//static void serialize( Archive & ar, T & t, const unsigned int file_version ){
//t.serialize(ar, file_version);
//}

struct Data_OG{
template<class Archive> void serialize(Archive &, const unsigned int) { }
};
struct Data_location {
template<class Archive> void serialize(Archive &, const unsigned int) { }
};

class Data_substation_AC2 : public Data_OG
{
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int) {
ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Data_OG);
ar & BOOST_SERIALIZATION_NVP(_primary_voltage);
ar & BOOST_SERIALIZATION_NVP(_secondary_voltage);
ar & BOOST_SERIALIZATION_NVP(_impedance1);
ar & BOOST_SERIALIZATION_NVP(_impedance2);
ar & BOOST_SERIALIZATION_NVP(_location);
}
std::string                                                   _name;
bu::quantity<si::electric_potential>                          _primary_voltage;
bu::quantity<si::electric_potential>                          _secondary_voltage;
bu::quantity<si::resistance, std::complex<double>>            _impedance1;
bu::quantity<si::resistance, std::complex<double>>            _impedance2;
Data_location _location;
};

int main() {
Data_substation_AC2 dsac2;

boost::archive::xml_oarchive oa(std::cout);
oa << BOOST_SERIALIZATION_NVP(dsac2);
}

Печать

    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
<boost_serialization signature="serialization::archive" version="14">
<dsac2 class_id="0" tracking_level="0" version="0">
<Data_OG class_id="1" tracking_level="0" version="0"></Data_OG>
<_primary_voltage class_id="2" tracking_level="0" version="0">
<value>0.00000000000000000e+00</value>
</_primary_voltage>
<_secondary_voltage>
<value>0.00000000000000000e+00</value>
</_secondary_voltage>
<_impedance1 class_id="3" tracking_level="0" version="0">
<value>
<real>0.00000000000000000e+00</real>
<imag>0.00000000000000000e+00</imag>
</value>
</_impedance1>
<_impedance2>
<value>
<real>0.00000000000000000e+00</real>
<imag>0.00000000000000000e+00</imag>
</value>
</_impedance2>
<_location class_id="4" tracking_level="0" version="0"></_location>
</dsac2>
</boost_serialization>
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector