2016-04-15 13 views
0

electric_potential型とdouble型のマップをシリアル化するにはどうすればよいですか? ?私のコードで 私はこれらのヘッダを入れている:エラーC2039: 'serialize': 'boost :: units :: quantity <boost :: units :: si :: 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>' 

探しています。 ありがとう in this picture the code when i use the type electrical_potential

+0

は、コンパイル・エラーが発生するコードを表示します。この関数テンプレートの 静的ボイドシリアライズ( アーカイブ&AR、 T&T、 CONST unsigned int型FILE_VERSION ){ t.serialize(AR、FILE_VERSION <クラスアーカイブ、クラスT>:クラスaccess.hppで – Dennis

+0

); } – Saad

+0

オリジナルの投稿を編集してコードを組み込みます – Dennis

答えて

0

私は問題が何かを見ることができません。あなたは、完全な、自己完結型のサンプルを示していないという事実は、私はあなたが私はそれを動作させるために何をしたかを示すによる場合を除いて、問題の実現に貢献することはできません意味:

Live On Coliru

#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> 
関連する問題