Boost logo

Boost Users :

From: Duane Murphy (duanemurphy_at_[hidden])
Date: 2004-12-20 21:38:24


--- At Mon, 20 Dec 2004 17:21:11 -0500, Ryan Wilcox wrote:

>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1
>
>Hello all,
>
>
>I would like to use boost::serialize for one of my projects, using
>Codewarrior 8.3 (going to CW 9 may or may not be in the picture), on Mac
>OS X (10.3.x)
>
>Anyway, I've been working on getting the unit tests for boost::serialize
>up and running inside the Codewarrior IDE. I created a new project file
>(C++, Mac OS Carbon, Console), included a serialize unit test, set the
>paths correctly, included the files I thought I would need for
>boost::test stuff, all that jazz.
>
>The test that I'm trying out now, in the serialization test suite, is
>test_binary.cpp. Trying to compile it gave me some immediate compiler
>errors (which I fixed by #including some additional source files:
>"binary_archive.hpp", "stdio.h" (tmpnam is in stdio.h in CW, and not
>cstdio).
>
>At the end I have just one error which I don't understand (both because
>the error message is hard to parse, and I'm fairly new to the boost
>libraries in general).
>
>Here, for completeness, is the error message:
>
>
>Error : illegal use of abstract class
>('boost::archive::detail::basic_iserializer::load_object_data(boost:
>:archive::detail::basic_iarchive
>&, void *, const unsigned int) const')
>~ (point of instantiation: 'test_main(int, char **)')
>~ (instantiating:
>'boost::archive::detail::interface_iarchive<boost::archive:
>:binary_iarchive>::operator>><boost::serialization::nvp<A>>(const
>boost::serialization::nvp<A> &)')
>~ (instantiating:
>'boost::archive::binary_iarchive_impl<boost::archive::binary_iarchive>:
>:load_override<boost::serialization::nvp<A>>(boost::serialization::nvp<A>
>&, int)')
>~ (instantiating:
>'boost::archive::basic_binary_iarchive<boost::archive::binary_iarchive>:
>:load_override<boost::serialization::nvp<A>>(boost::serialization::nvp<A>
>&, int)')
>~ (instantiating:
>'boost::archive::load<boost::archive::binary_iarchive,
>boost::serialization::nvp<A>>(boost::archive::binary_iarchive &,
>boost::serialization::nvp<A> &)')
>~ (instantiating:
>'boost::archive::detail::load_non_pointer_type<boost::archive:
>:binary_iarchive,
>boost::serialization::nvp<A>>::invoke(boost::archive::binary_iarchive &,
>boost::serialization::nvp<A> &)')
>~ (instantiating:
>'boost::archive::detail::load_non_pointer_type<boost::archive:
>:binary_iarchive,
>boost::serialization::nvp<A>>::load_only::invoke(boost::archive:
>:binary_iarchive
>&, boost::serialization::nvp<A> &)')
>~ (instantiating:
>'boost::serialization::serialize_adl<boost::archive::binary_iarchive,
>boost::serialization::nvp<A>>(boost::archive::binary_iarchive &,
>boost::serialization::nvp<A> &, const unsigned int)')
>~ (instantiating:
>'boost::serialization::serialize<boost::archive::binary_iarchive,
>boost::serialization::nvp<A>>(boost::archive::binary_iarchive &,
>boost::serialization::nvp<A> &, const unsigned int)')
>~ (instantiating:
>'boost::serialization::access::serialize<boost::archive::binary_iarchive,
>boost::serialization::nvp<A>>(boost::archive::binary_iarchive &,
>boost::serialization::nvp<A> &, const unsigned int)')
>~ (instantiating:
>'boost::serialization::nvp<A>::serialize<boost::archive:
>:binary_iarchive>(boost::archive::binary_iarchive
>&, const unsigned int) const')
>~ (instantiating:
>'boost::archive::detail::interface_iarchive<boost::archive:
>:binary_iarchive>::operator&<A>(A
>&)')
>~ (instantiating:
>'boost::archive::binary_iarchive_impl<boost::archive::binary_iarchive>:
>:load_override<A>(A
>&, int)')
>~ (instantiating:
>'boost::archive::basic_binary_iarchive<boost::archive::binary_iarchive>:
>:load_override<A>(A
>&, int)')
>~ (instantiating:
>'boost::archive::load<boost::archive::binary_iarchive,
>A>(boost::archive::binary_iarchive &, A &)')
>~ (instantiating:
>'boost::archive::detail::load_non_pointer_type<boost::archive:
>:binary_iarchive,
>A>::invoke(boost::archive::binary_iarchive &, A &)')
>~ (instantiating:
>'boost::archive::detail::load_non_pointer_type<boost::archive:
>:binary_iarchive,
>A>::load::invoke(boost::archive::binary_iarchive &, A &)')
>~ (instantiating:
>'boost::archive::detail::iserializer<boost::archive::binary_iarchive,
>A>::instantiate()')
>iserializer.hpp line 142 static iserializer instance;
>
>_____
>
>I don't, really, understand why there's an error here, as iserializer is
>~ a non-abstract type (as far as I can see), but it looks like there's
>plenty of template stuff going on, and there may be a clue in there.
>
>
>Does anyone have any pointers, or ideas on how I can fix this error?

I think you're looking at the wrong end of the stick:

Error : illegal use of abstract class
('boost::archive::detail::basic_iserializer::load_object_data(boost:
:archive::detail::basic_iarchive
&, void *, const unsigned int) const')

I think this says that load_object_data() is an illegal use of an
abstract class. I haven't used the serialization library so I can't help
much past trying to point in the right direction.
  
 ...Duane


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net