/* File : example.c */ #include "example.h" #include #ifndef M_PI # define M_PI 3.14159265358979323846 #endif /* Move the shape to a new location */ void Shape::move(double dx, double dy) { x += dx; y += dy; } int Shape::nshapes = 0; double Circle::area(void) { return M_PI*radius*radius; } double Circle::perimeter(void) { return 2*M_PI*radius; } double Square::area(void) { return width*width; } double Square::perimeter(void) { return 4*width; } double do_op(Shape *s, double (Shape::*m)(void)) { return (s->*m)(); } double (Shape::*areapt())(void) { return &Shape::area; } double (Shape::*perimeterpt())(void) { return &Shape::perimeter; } /* Member pointer variables */ double (Shape::*areavar)(void) = &Shape::area; double (Shape::*perimetervar)(void) = &Shape::perimeter;