C++ and dynamically loaded libraries having derived classes

Documentation
Login

Documentation

#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_