Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C++] problema return

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    6

    problema return

    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

  2. #2
    Perché ti aspetti che con fig->area(); stampi qualcosa? Quella funzione semplicemente fornisce l'area come valore restituito, per stamparlo ovviamente devi passare tale valore a cout...
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    6
    Originariamente inviato da MItaly
    Perché ti aspetti che con fig->area(); stampi qualcosa? Quella funzione semplicemente fornisce l'area come valore restituito, per stamparlo ovviamente devi passare tale valore a cout...

    hai ragione... mi vergogno di quello che ho chiesto...il problema è che quando vai molto avanti finisci con l'ingripparti per le cose più semplici! Perdono

  4. #4
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.