C++ and dynamically loaded libraries having derived classes

Documentation
Login

Documentation

#include <cmath>
#include <iostream>

#include "my-rect.h"
// #include "dl4-load-class-polygon.h"

//class square : virtual public rect {
// class square : virtual public polygon { // <--- 'virtual' CAUSES CORE DUMP IN dlclose(square)
class SquareDerivedFromRect : public Rect {
 public:
        virtual double Area() const {
            double one_side = _param1;
            return power2(one_side);
        }

 private:
        double power2(double side) const {
            std::cout << " (SQUARE DERIVED FROM RECT: calculating in square_derived->power2(), supposed to override rect...) ";
            return (side * side);
        }
};

// the class factories
extern "C" Shape* create() { return new SquareDerivedFromRect; }
extern "C" void destroy(Shape* p) { delete p; }