
Hi to all I am new to the boost library, I downloaded it and I am doing some tests. I was using MFC serialization. I want to do something like this : template<class _CReceiver, class _CMemberType> class CASetMemberCommand { friend class boost::serialization::access; public: typedef void (_CReceiver::* Action)(_CMemberType) ; protected: _CReceiver *m_pReceiver; _CMemberType m_Property; Action m_fnAction; public: CASetMemberCommand() { m_pReceiver = NULL; } CASetMemberCommand(_CReceiver *pReceiver, Action fnAction, _CMemberType memberProperty) { m_pReceiver = pReceiver; m_fnAction = fnAction; m_Property = memberProperty; } ~CASetMemberCommand() { } virtual void Execute() { if(m_pReceiver) (m_pReceiver->*m_fnAction)(m_Property); } template<class Archive> void serialize(Archive & ar, const unsigned int /* file_version */){ ar & BOOST_SERIALIZATION_NVP(m_pReceiver) //& BOOST_SERIALIZATION_NVP(m_fnAction) & BOOST_SERIALIZATION_NVP(m_Property); } void Save(const char * filename) { std::ofstream ofs(filename); assert(ofs.good()); boost::archive::xml_oarchive oa(ofs); oa << BOOST_SERIALIZATION_NVP(this); } void Load( const char * filename) { std::ifstream ifs(filename); assert(ifs.good()); boost::archive::xml_iarchive ia(ifs); ia >> BOOST_SERIALIZATION_NVP(*this); } }; int main(int argc, char *argv[]) { gps_position pos(32,52,25.0f); CASetMemberCommand<gps_position,int> cmd(&pos,&gps_position::SetMinutes,25); CASetMemberCommand<gps_position,int> cmd4(&pos,&gps_position::SetDegrees,25); cmd.Execute(); SaveCommand(cmd,"D:/test.xml"); cmd.Save("D:/Test2.xml"); CASetMemberCommand<gps_position,int> cmd2; cmd2.Load("D:/Test2.xml"); return 0; } the problem is that BOOST_SERIALIZATION_NVP(m_fnAction) is not working (compile errors); Is there any way to save a methode of w class, so it can be loaded and used later? Thank you