Hi,
I am using the observer pattern in a design and would like to make both subject and observers serializable. The subject hold a base class pointer to the observes and the observers holds a base class pointer to the subject.
If I have understood the library correct I must register the class for base class pointers in order to serialize the class pointer.
Nope - you just have to indicate the base class for each class that has one.
I have included a small piece of code. It illustrates how I have interpreted the documentation. As you can see I use BOOST_CLASS_EXPORT (from what I read above, this is not needed). If I exclude the BOOST_CLASS_EXPORT I get "unregistered class" exception. If I include it, it appears to works but I get seg. fault during main exit (most likely a different problem related to my environment). I guess that I am using some parts of the library incorrect.
This means that I must include the concrete subject in the concrete observers and vice versa. The means that I will run into circular dependencies.
Nope C++ doesn't permit a circular derived/base class structure
Understood, but I do not have a circular dependency between derived/base class, but with concrete observable(subject) and concrete observers.
I guess that I am missing something here, the observer pattern must be frequently used and be serialized.
You're confusing the class structure which cannot be circular with a seqence of pointers which can be circular.
I guess you are right, I think I understand.
The library can handle circular pointer references with no problem.
Understood (and agreed) / Mikael Carlsson