| /* File : example.c */ |
| |
| #include "example.h" |
| #include <math.h> |
| |
| /* 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; |
| |