This object represents inheritence in the KlassModeler. It is pretty deeply flawed, partly because it's hard to represent inheritence between 2 objects when one of them may or may not be present, and partly because I put the object and the visual representation in one class.

It should be changed, but I've worked around the problems for now and I don't really feel like gutting it and re-writing it.

There are two major forms of inheritance, internal and external. Internal means both parent and child objects are in the model and need to be drawn. External means the parent it outside of the model (ie boost::noncopyable).


virtual ~Inheritance( )

virtual bool IsInternal( )

virtual std::string ConvertToXml( ) const =0

virtual void Unlink( ) =0

virtual std::string GetParentName( ) const =0

void SetDocs( const std::string& D)

const std::string& GetDocs( ) const


Inheritance( ClassObjectPtr pChild)

ClassObjectPtr GetChild( ) const

static const std::string XML_NAME

static const std::string XML_TYPE

static const std::string XML_DOCS

static const std::string XML_CHILD_NAME

static const std::string XML_PARENT_NAME


ClassObjectWeakPtr m_pChild

a weak pointer to the child. This is weak to avoid circular references.

std::string m_Docs

This is meant to be documentation about why the inheritance was done. It can be edited in the class notebook view.