Salve ho questa classe figura astratta
e la classe derivata: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
l'altra derivatacodice:#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
il problema è che nel main quando attivo il polimorfismo non mi chiama la funzione "area()".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
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

Rispondi quotando
