Salve ho questa classe figura astratta
codice:
#ifndef _FIGURA_
#define _FIGURA_

#include <iostream>

using namespace std;

class Figura {
      
      public:
             virtual double area()const { return 0.0;}
             virtual double volume()const {return 0.0;}
             virtual void stampa_nome_figura()const=0;
             virtual void stampa_parametri()const=0;
};

#endif
e la classe derivata:
codice:
#ifndef _PUNTO_
#define _PUNTO_

#include <iostream>
#include "figura.h"
using namespace std;


class Punto: public Figura{
      
      private:
              int x;
              int y;
      public:
             Punto(int a=0,int b=0) {x=a; y=b;}
             int get_x() const {return x;}
             int get_y() const {return y;}
             void set_Punto(int a,int b) {x=a; y=b;}
             virtual void stampa_nome_figura()const {cout<<"\nPunto:";}
             virtual void stampa_parametri()const {cout<<"["<<x<<","<<y<<"]";}     
};

#endif
l'altra derivata
codice:
#ifndef _CERCHIO_
#define _CERCHIO_

#include <iostream>
#include "punto.h"
using namespace std;

class Cerchio: public Punto{
      
      private:
              double Radius;
      public:
             Cerchio(int a=0,int b=0,double raggio=0):Punto(a,b),Radius(raggio) {}
             void set_Radius(double raggio) {if (raggio >0) Radius=raggio;else Radius=0;}
             double get_Radius() const {return Radius;}
             virtual double area()const {return ((3.14)*(Radius)*(Radius));}
             virtual void stampa_nome_figura()const {}
             virtual void stampa_parametri()const {}
};

#endif
il problema è che nel main quando attivo il polimorfismo non mi chiama la funzione "area()".
Ad esempio nel main faccio
codice:
Figura* fig; 
Cerchio c(1,1,2);
fig=&c; 
fig->area(); NON VEDO NULLA è come se il return non funzionasse.. mentre se faccio cout<<fig->area(); visualizzo tutto in maniera corretta. Dove sbaglio? grazie