#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; }