Why is inherited member not allowed?
You have to declare the over-ridden functions as part of your class definition Note that the use of virtual here is optional. As n.m. noted, you should also include a virtual destructor in Shape. You may also want to make its virtual functions pure virtual (based on your comment about Shape being abstract)