Bonjour.

Je suis actuellement confronté à un problème avec serialize lorsqu'on l'utilise sur des pointeurs de string. en effet, l'exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/string.hpp>
#include <fstream>
#include <string>
int main()
{
  std::string* s=new std::string("lalala");
  std::ofstream of("file.txt");
  {
    boost::archive::text_oarchive oa(of);
    // write class instance to archive
    oa << s;
    // archive and stream closed when destructors are called
  }
  delete s;
  return 0;
}
ne compile pas et me donne l'erreur (erreur principale en rouge à la fin):
Citation Envoyé par gcc 4.4.1
-------------- Build: Debug in Boost_Serialize_Test ---------------

Compiling: main.cpp
In file included from /usr/include/boost/serialization/split_member.hpp:23,
from /usr/include/boost/serialization/nvp.hpp:33,
from /usr/include/boost/serialization/serialization.hpp:17,
from /usr/include/boost/archive/detail/oserializer.hpp:61,
from /usr/include/boost/archive/detail/interface_oarchive.hpp:24,
from /usr/include/boost/archive/detail/common_oarchive.hpp:20,
from /usr/include/boost/archive/basic_text_oarchive.hpp:32,
from /usr/include/boost/archive/text_oarchive.hpp:31,
from /.../main.cpp:2:
/usr/include/boost/serialization/access.hpp: In static member function ‘static void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::text_oarchive, T = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]’:
/usr/include/boost/serialization/serialization.hpp:74: instantiated from ‘void boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::text_oarchive, T = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]’
/usr/include/boost/serialization/serialization.hpp:133: instantiated from ‘void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::archive::text_oarchive, T = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]’
/usr/include/boost/archive/detail/oserializer.hpp:140: instantiated from ‘void boost::archive::detail::oserializer<Archive, T>::save_object_data(boost::archive::detail::basic_oarchive&, const void*) const [with Archive = boost::archive::text_oarchive, T = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]’
/.../main.cpp:87: instantiated from here
/usr/include/boost/serialization/access.hpp:109: error: ‘struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >’ has no member named ‘serialize’
Process terminated with status 1 (0 minutes, 4 seconds)
1 errors, 0 warnings
... pourtant ce ne devrait pas être le cas d'après la doc ... à moins que les classes de bases de std::string doivent être enregistrées mais je suis étonné qu'elles ne le soient pas déjà dans boost/serialization/string.hpp...

J'utilise gcc 4.4.1 et boost 4.0...

Merci d'avance