Here to show you what I mean exactly it hard to describe without code:
class Character: public Object, public Attribute
Object* ch = new Character;
// How can I call the myfunc() from Attribute
// tried static_cast<Attribute*>(ch);
Cross casting can only be done by dynamic_cast.
Object * o = new Character; Attribute * a = dynamic_cast<Attribute*>(o); if (!a) throw_a_fit(); a->myfunc();
However, for this to work you must have polymorphic base classes (they must have at least one virtual function).