// pointers to base class
#include <iostream>
using namespace std;
class CPolygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b; }
};
class CRectangle: public CPolygon {
public:
int area ()
{ return (width * height); }
};
class CTriangle: public CPolygon {
public:
int area ()
{ return (width * height / 2); }
};
int main () {
CRectangle rect;
CTriangle trgl;
CPolygon * ppoly1 = ▭
CPolygon * ppoly2 = &trgl;
ppoly1->set_values (4,5);
ppoly2->set_values (4,5);
cout << pploy1->area() << endl;
cout << ppoly2->area() << endl;
return 0;
}
I have a question with the above code.
ppoly1->set_values (4,5);
ppoly2->set_values (4,5);
works and successfully set values for rect and trgl but
cout << pploy1->area() << endl;
cout << ppoly2->area() << endl;
doesn't work, why? I think if
ppoly1->set_values (4,5);
ppoly2->set_values (4,5);
works means *ppoly1 and *ppoly2 can represent derived classes, so we can access the derived class area functions by using pploy1->area() and pploy2->area()
but the compiler shows errors
thanks