Thread: Solving type of class

  1. #1
    Registered User
    Join Date
    Feb 2002
    Posts
    589

    Solving type of class

    This is kinda lengthy but I am curious if there is a neat solution to this

    I have a class like so
    Code:
    public abstract class Entity
    {
        public abstract void Draw(Graphics g);
        public static Vector Intersect(Line line1, Line line2)
        {
             //Do stuff
        }
        public static Vector Intersect(Arc arc1, Arc arc2)
        {
             //Do stuff
        }
    }
    Then I have two classes like this
    Code:
    public class Line : Entity
    {
        override public void Draw(Graphics g)
        {
            //Draw stuff
        }
    }
    
    public class Arc : Entity
    {
        override public void Draw(Graphics g)
        {
            //Draw stuff
        }
    }
    I now can do this
    Code:
    private void MainWin_Paint(e)
    {
        foreach(Entity entity in m_alVisableEntities)
        {
            Graphics g = e.Graphics;
            entity.Draw(g);	
        }
    }
    What happens here is that at run time the program call the correct draw function , either Arc or Line.

    But if I try to do this
    Code:
    vIntersection = Entity.Intersection(m_Entity1, m_Entity2);
    where m_Entity1 and m_Entity2 are Entity containg Line instances. I get a compile time error saying something like "cannot convert argument from Entity to Line"

    Why is it that in the first case the compiler can solve what type of entity I am calling but not in the second case. And is there a decent way to solve it without manually doing type checking?

    Thanks

    ~Barjor
    Last edited by Barjor; 06-05-2003 at 11:32 AM.

  2. #2
    the hat of redundancy hat nvoigt's Avatar
    Join Date
    Aug 2001
    Location
    Hannover, Germany
    Posts
    3,130
    Well, you could make Intersect an abstract function as well like this:

    public abstract Vector Intersect( Entity other );

    And overwrite this for each derived class, so you can do:

    m_Entity1->Intersect( m_Entity2 );
    hth
    -nv

    She was so Blonde, she spent 20 minutes looking at the orange juice can because it said "Concentrate."

    When in doubt, read the FAQ.
    Then ask a smart question.

  3. #3
    Registered User
    Join Date
    Feb 2002
    Posts
    589
    What I am trying to do is to create overloaded functions that will take care of intersections between Arcs and line

    public Vector Intersect( Line, Line );
    public Vector Intersect( Line, Arc );
    public Vector Intersect( Arc, Line );
    public Vector Intersect( Arc, Arc );

    when I call them I would like to just be able to pass them two Entity and have the run time decide what function to call. The problem is that without some sort of type checking I don't know what type (arc or line) that will be passed to the Intersect(XX,XX)


    "Quote"
    m_Entity1->Intersect( m_Entity2 );

    Done to much C++ lately??? *Smile*

    Thanks for your help



    EDIT

    MM maybee I was reading that to fast..you might actually have solved my problem...I think...maybee

    THANKS

    ~Barjor
    Last edited by Barjor; 06-05-2003 at 01:04 PM.

  4. #4
    the hat of redundancy hat nvoigt's Avatar
    Join Date
    Aug 2001
    Location
    Hannover, Germany
    Posts
    3,130
    Oops *ggg* yeah, I had to find my way through another projects C++ code all day...
    hth
    -nv

    She was so Blonde, she spent 20 minutes looking at the orange juice can because it said "Concentrate."

    When in doubt, read the FAQ.
    Then ask a smart question.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Getting an error with OpenGL: collect2: ld returned 1 exit status
    By Lorgon Jortle in forum C++ Programming
    Replies: 6
    Last Post: 05-08-2009, 08:18 PM
  2. Replies: 0
    Last Post: 03-20-2008, 07:59 AM
  3. Question on l-values.
    By Hulag in forum C++ Programming
    Replies: 6
    Last Post: 10-13-2005, 04:33 PM
  4. Erros in Utility Header File
    By silk.odyssey in forum C++ Programming
    Replies: 4
    Last Post: 12-22-2003, 06:17 AM
  5. Warnings, warnings, warnings?
    By spentdome in forum C Programming
    Replies: 25
    Last Post: 05-27-2002, 06:49 PM