Marcus MacWilliam wrote:
At first I thought this was obvious. But now I look at this I would have thought it would work. I'm thinkinig it's related to the member function look up rules associated with virtual member functions. In any case, try the following:
a) in BaseClass.h what(); to what() = 0; This will detect any non-obvious copying (slicing) which might be occurring.
The what was added just for debugging purposes. Removal of all what() still does not cause DeriveClass::serialize to be called.
the "=0" makes the class an abstract base class which cannot be instantiated. This will fail to compile code which unintentionally slices the object. Just put the =0 and see what it does.
b) in InstantiableClass add a serialize function which only incudes only base object serialization.
If I did that, I would lose the data from the derived class. (m_com).
I meant base object as it's related to InstanciableClass - in this case that means that the base object referred to by Instancialble class would be the "DerivedClass"
c) tweak your main test program so that it doesn't use InstantiableClass but rather DerivedClass directly. Does that work?
It needs to use the InstantiableClass, cannot use the DerivedClass directly. This is cut down code from our application, with a single example of the relationship. The classes are not called by those names IRL.
My question was "Does that work?" Robert Ramey