Boost logo

Boost Users :

From: martin f krafft (madduck_at_[hidden])
Date: 2005-05-11 08:58:49

also sprach Robert Ramey <ramey_at_[hidden]> [2005.05.11.0826 +0200]:
> This should work - How is your case different that test_cycle.cpp ?

If you are talking about test_cyclic_ptrs.cpp, how does that
actually show that it works? It just states in a comment that it
cannot be made to work, and the test_main code actually assumes that
it won't work:

      exception.code == boost::archive::archive_exception::pointer_conflict

> The pointer conflict means that something has been serializaed as
> first as a pointer then as an object. Normally this should be
> easily avoidable.

What about the cases when it's not easily avoidable? In a related
thread, I asked the question of how to serialise a linked list.

    if (this->next) serialize *(this->next);
    serialize this->next;

this (recursive) approach will work (I think). But what if I have to
use iteration? Or if I serialise a graph, where a number of pointers
to a node may exist? Do I really have to go through the lengths to
ensure that the Nodes are serialised first?

> This is flagged as an error because the de-serialization would be
> a problem. First the deserialization of a pointer creates an
> object - next the object itself is re-loaded - but now we have two
> objects when we started with one.

Couldn't it just assign the already-created object to the
non-pointer? From what I understand, serialising *P then P is the
same as serialising P then *P: the first time, the entire object is
dumped. The second time, a reference is written instead. Thus, on
first creation, everything is already known about the object. And
when the non-pointer needs to be serialised, then we don't return
a pointer, but a reference...

martin;              (greetings from the heart of the sun.)
  \____ echo mailto: !#^."<*>"|tr "<*> mailto:" net_at_madduck
invalid/expired pgp subkeys? use as keyserver!
spamtraps: madduck.bogus_at_[hidden]
scientists will study your brain to learn
more about your distant cousin, man.

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at