Check for Possible Problems
You have made the necessary data accessible, and declared and defined the global functions required for isomorphic persistence. Before you go any further, you need to review your work for possible problems.
If you have defined any of the following global operators and you use the RW_DEFINE_PERSISTABLE macro, you will get compiler ambiguity errors.
 
RWvostream& operator<<(RWvostream& s, const YourClass& t);
RWvistream& operator>>(RWvistream& s, YourClass& t);
RWvistream& operator>>(RWvistream& s, YourClass*& pT);
RWFile& operator<<(RWFile& s, const YourClass& t);
RWFile& operator>>(RWFile& s, YourClass& t);
RWFile& operator>>(RWFile& s, YourClass*& pT);
The compiler errors occur because using RW_DEFINE_PERSISTABLE along with a different definition of the operators defines the operators twice. This means that the compiler does not know which operator definition to use. In this case, you have two choices:
1. Remove the operator<< and operator>> global functions that you previously defined for YourClass and replace them with the operators generated by the RW_DEFINE_PERSISTABLE(YourClass).
2. Modify your operator<< and operator>> global functions for YourClass using the contents of the RW_DEFINE_PERSISTABLE macro in rw/epersist.h as a guide.