Path: utzoo!news-server.csri.toronto.edu!rutgers!uwm.edu!linac!midway!iitmax!soudan From: soudan@iitmax.iit.edu (Bassel Soudan) Newsgroups: comp.sys.mac.programmer Subject: Multiple Inheritance in Think C (help!) Message-ID: <1991Mar11.215719.8488@iitmax.iit.edu> Date: 11 Mar 91 21:57:19 GMT Reply-To: soudan@iitmax.iit.edu (Bassel Soudan) Organization: Illinois Institute of Technology Lines: 66 Hello fellow mail list patrons, I have a problem that I am trying to solve and I need your help. The problem has to do with multiple inheritance and goes like this: I created a CComponent class to model a hardware component. Each component is made up of several elements (Panes, Buttons, StaticText etc.). The elements for the components are grouped together in a List called itsElements. When my component receives a Draw or Move message, I want to pass that along to all the elements that make up this component. Here is what I am doing now : In my CComponent::Draw() method I call DoForEach->itsElements(DrawElem); In DrawElem (CObject *obj) I try to do the following : obj->Draw(); All the elements that make up the components have a Draw message defined. When I try to compile this program, I get the famous "Draw is not part of the struct or union" or something similar to that. I get this because CObject does not have a Draw method (and it shouldn't). What I want to do is create a co-parent class for all the objects that will be elements in my components, so that I can cast obj into that and solve the problem. The elements that I am using are all subclasses that I derived from the original classes. (for example I derived a CField class as a sub-class of CPane). I created a sub-class of CObject and made all my element classes sub-classes of that class. The only problem is that my element classes no longer exhibit the behavior of their original parents. (i.e. my CField which should be working like a CPane is no longer able to perform any of the things that a CPane can). I asked this quetion somewhere else, and somebody suggested that I create a subclass of CObject (call it Element for now) and then customize it by pointing to instances of a CPane or a CButtonor or whatever. The only problem is that my customized instance of CElement will not inherit all the behavior of the parent class (the one whose instance I am pointing to). The whole problem is that I need to cast the entries in the itsElements list to be able to pass them the Draw message that I got. If anyone knows a way to bypass this casting requirement, that might solve my problem. I am sorry if this has been long and confusing but this is the only way I could describe the problem. If you can be of any assistance I would be eternally gratefull. Sincerely yours, Bassel Soudan soudan@iitmax.iit.edu -- ________________________________________________________________________________ "Learn to say I don't know, and not to say I know. Because, if you say 'I don't know' the people will teach you until you know, and if you say 'I know' the people will ask you until you don't know." ________________________________________________________________________________