#ifndef __SHAPE_H_
#define __SHAPE_H_
class Shape {
protected:
double _param1;
double _param2;
double _param3;
public:
Shape() :
_param1(0),
_param2(0),
_param3(0)
{}
virtual ~Shape() = default;
void set_params(double param1=0, double param2=0, double param3=0) {
_param1 = param1;
_param2 = param2;
_param3 = param3;
}
virtual double Area() const = 0;
};
// the types of the class factories
typedef Shape* create_t();
typedef void destroy_t(Shape*);
#endif // __SHAPE_H_