
The question is not the name of the method, the problem is the additional parameter which boost::serialization cannot pass to me. For this reason I have to call my own serialize method inside the standard serialize method prepared for boost::serialization. template<class TArchiveType> MyContainer::serialize(TArchiveType &rArchive, const unsigned int Version) { p_variable_data->MyCustomSerialize(rArchive, Version, MyData); } NOTE that I have a pointer to the base calss and I have to call the MyCustomSerialize of the derive class. For doing this I have to simulate the mechanism already used in boost::serialization to call the standard serialization. The problem is that I dont know how to use the get_extended_info and its related interface. Thanks again. Pooyan. ____________________________________________________________________________ ____________________________________________________________________________ _______________________ Dr. Pooyan Dadvand Member of Kratos team International Center for Numerical Methods in Engineering - CIMNE Campus Norte, Edificio C1 c/ Gran Capitán s/n 08034 Barcelona, España Tel: (+34) 93 401 56 96 Fax: (+34) 93.401.65 17 web: <http://www.cimne.com> www.cimne.com <http://www.cimne.com/kratos/> www.cimne.com/kratos/ ____________________________________________________________________________ ____________________________________________________________________________ _______________________ AVISO IMPORTANTE Los datos de carácter personal contenidos en el mensaje, se registrarán en un fichero para facilitar la gestión de las comunicaciones de CIMNE. Se pueden ejercitar los derechos de acceso, rectificación, cancelación y oposición por escrito, dirigiéndose a nuestras oficinas de CIMNE, Gran Capitán s/n, Edificio C1 - Campus Norte UPC, 08034 Barcelona, España. AVÍS IMPORTANT Les dades de caràcter personal contingudes en aquest missatge es registraran en un fitxer per facilitar la gestió de les comunicacions del CIMNE. Es poden exercir els drets d'accés, rectificació, cancel·lació i oposició, per escrit a les nostres oficines del CIMNE, Gran Capità s/n, Edifici C1, Campus Nord UPC, 08034 Barcelona, Espanya. IMPORTANT NOTICE All personal data contained in this mail will be processed confidentially and stored in a file property of CIMNE in order to manage corporate communications. You may exercise the right of access, rectification, deletion and objection by letter sent to CIMNE, Gran Capitán, Edificio C1 - Campus Norte UPC, 08034 Barcelona, Spain. From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Robert Ramey Sent: 25 August 2010 18:23 To: boost-users@lists.boost.org Subject: Re: [Boost-users] Boost Serialization callinga customserialize method Pooyan Dadvand wrote:
Hi,
First of all thank you for your kind suggestion. I completely agree about suggested methodology for optimizing. (Indeed this is the methodology I use in my work) However here my concern is the performance in normal use of container and not in seriliaztion and optimizing the serialization will be a secondary objective.
What I need to know is how to call a MyCostumSerialize method of my derive object with an additional parameter via a pointer to the base class:
Class VariableData{ std::size_t m_Key; public:
template<class TArchiveType> MyCostumSerialize(TArchiveType &rArchive, const unsigned int Version, void* pValue) {}
};
template<class TDataType> class Veriable : public VariableData { public:
template<class TArchiveType> MyCostumSerialize(TArchiveType &rArchive, const unsigned int Version, void* pValue) { rArchive & static_cast<TDataType * >(pVAlue); }
}
Let say I don't how to call the MyCostumSerialize method of "Variable" class above when I have a "VariableData*" pointer in my container:
std::vector<std::pair<const VariableData*, void*> >
Just rename MyCostumeSerialize to serialize Robert Ramey