Original Post
Here's an interesting one for you lot. I'm having trouble with the lifetimes of virtual base classes. I think. Here's a rough simplified analagy of what I'm working with. Interfaces:
- iReferenceCountedObject - Guess, I dare you.
- iModel - A generic model. Has a virtual iReferenceCountedObject base class, as all iModels have to support reference counting sematics.
- cReferenceCountedObject - Implementes common reference counting functionality. Has a virtual iReferenceCountedObject base class.
- cModelBase - Implements common functionality for models. Has virtual iReferenceCountedObject, iModel, and cReferenceCountedObject base classes.
- cModel - Implements all the functionality of a model. Has a cModelBase base class (and thus supports both the iReferencecountedObject and iModel interfaces).
- cManager - Keeps track of children. Has a createChild() that returns a new iModel instance, as well as register(iModel*), and unRegister(iModel*).