Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda con Vector Dinamico de una Clase Abstracta

Estas en el tema de Ayuda con Vector Dinamico de una Clase Abstracta en el foro de C/C++ en Foros del Web. Hola amigos Necesito ayuda con este código. Cree una clase "abstracta" FigUras y las dos clases de descienden de esta, CircUlo y Rectangle. Lo principal ...
  #1 (permalink)  
Antiguo 05/01/2010, 20:49
 
Fecha de Ingreso: junio-2006
Mensajes: 63
Antigüedad: 18 años, 4 meses
Puntos: 0
Ayuda con Vector Dinamico de una Clase Abstracta

Hola amigos

Necesito ayuda con este código. Cree una clase "abstracta" FigUras y las dos clases de descienden de esta, CircUlo y Rectangle. Lo principal es lograr crear un vector dinámico del tipo FigUras para poder crear objetos del tipo CircUlo y Rectangle en el vector.
Error parece ser que no ha sobreescrito los metodos virtuales.

Miren el codigo y respondan sus soluciones

Código:
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>

using namespace std;

class FigUra {
   public:
      virtual double area()=0;
      virtual double circUnferencia()=0;
};
class CircUlo : public FigUra {
   protected:
      double r;
   public:
      CircUlo(){
         r = 1.0;
      }
      CircUlo(double r){
         this->r = r;
      }
      double area(){
         return M_PI*r*r;
      }
      double circUnferencia(){
         return 2*M_PI*r;
      }
      double getR(){
         return r;
      }
};
class Rectangle : public FigUra {
   protected:
      double l, a;
   public:
      Rectangle() {
         l = 0.0;
         a = 0.0;
      }
      Rectangle(double l, double a){
         this->l = l;
         this->a = a;
      }
      double area(){
         return l*a;
      }   
      double circUnferencia(){         
         return 2*(l+a);
      }
      double getL(){
         return l;
      }
      double getA(){
         return a;
      }
};
int main(){
   FigUra **figUras;
   double total_area=0;
   int n=3;
   figUras=new FigUra*[n];
   figUras[0]=new CircUlo(2);
   figUras[1]=new Rectangle(1,3);
   figUras[2]=new Rectangle(4,2);
   for(int i = 0; i < 3; i++){
      cout<<"\n "<<figUras[i].area();
      total_area+=figUras[i].area(); 
   }
   cout<<"\n\n "<<total_area;
   getch();
   return 0;
}
Gracias de antemano
  #2 (permalink)  
Antiguo 09/01/2010, 00:15
Avatar de 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

Etiquetas: clase, dinamico, vectores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:11.