polymorphism and operator==

suppose I have a class containing

vector<Shape*> m_allShapes;

and Shape is the base-class for various shapes like "Circle" or "Square" and so on. how should operator== look like for this class? how can I compare 2 Shape objects by the derived classes contents, when I do not know the exact type? I could add

virtual bool Shape::Equal(Shape&);

to each Shape-class, but how do I make sure that the compared objects are of the same type? I could compare whatever member-function pointer, but what's the non-awkward solution for discerning Shape object-types?
This is about as good of an answer as there is:

http://www.cplusplus.com/forum/beginner/18705/
thanks. at least now I know how the majority handles this.
Topic archived. No new replies allowed.