how can I call this C++ Code from C? I must use C, because Ruby-ffi
understand only C.
Expand|Select|Wrap|Line Numbers
- class Shape {
- public:
- Shape() {
- nshapes++;
- }
- virtual ~Shape() {
- nshapes--;
- };
- double x, y;
- void move(double dx, double dy);
- virtual double area(void) = 0;
- virtual double perimeter(void) = 0;
- static int nshapes;
- };
- class Circle : public Shape {
- private:
- double radius;
- public:
- Circle(double r) : radius(r) { };
- virtual double area(void);
- virtual double perimeter(void);
- };
- class Square : public Shape {
- private:
- double width;
- public:
- Square(double w) : width(w) { };
- virtual double area(void);
- virtual double perimeter(void);
- };
Expand|Select|Wrap|Line Numbers
- #include "example.h"
- #define M_PI 3.14159265358979323846
- /* 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;
- }