Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/01/2010, 00:15
Avatar de BLIZNA
BLIZNA
 
Fecha de Ingreso: octubre-2006
Ubicación: Caracas
Mensajes: 49
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: Ayuda con Vector Dinamico de una Clase Abstracta

Código C++:
Ver original
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5. /**
  6.   * Clase Figura
  7. **/
  8. class Figura{
  9.     public:
  10.         virtual double area() = 0;
  11.         virtual double circUnferencia() = 0;
  12. };
  13. /**
  14.   * Clase Circulo
  15. **/
  16. class Circulo : public Figura{
  17.     protected:
  18.         double r;
  19.     public:
  20.         Circulo(){
  21.             r = 1.0;
  22.         };
  23.         Circulo(double r){
  24.             this->r = r;
  25.         };
  26.         double area(){
  27.             return 3.1416*r*r;
  28.         };
  29.         double circUnferencia(){
  30.             return 2*3.1416*r;
  31.         };
  32.         double getR(){
  33.             return r;
  34.         };
  35. };
  36.  
  37. /**
  38.   * Clase Rectangle
  39. **/
  40. class Rectangle : public Figura {
  41.    protected:
  42.       double l, a;
  43.    public:
  44.       Rectangle() {
  45.          l = 0.0;
  46.          a = 0.0;
  47.       };
  48.       Rectangle(double l, double a){
  49.          this->l = l;
  50.          this->a = a;
  51.       };
  52.       double area(){
  53.          return l*a;
  54.       };
  55.       double circUnferencia(){
  56.          return 2*(l+a);
  57.       };
  58.       double getL(){
  59.          return l;
  60.       };
  61.       double getA(){
  62.          return a;
  63.       };
  64. };
  65.  
  66. int main()
  67. {
  68.  
  69.     double total_area=0;
  70.     int n=3;
  71.     Figura **figuras;
  72.     figuras = new Figura*[n];
  73.  
  74.     figuras[0]=new Circulo(2);
  75.     figuras[1]=new Rectangle(1,3);
  76.     figuras[2]=new Rectangle(4,2);
  77.  
  78.     for(int i = 0; i < 3; i++){
  79.       cout << endl << figuras[i]->area();
  80.       total_area += figuras[i]->area();
  81.     }
  82.     cout<<"\n\n "<<total_area;
  83.  
  84.     return 0;
  85. }
__________________
-----------
BLIZNA