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