Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/01/2010, 20:49
edsedx4
 
Fecha de Ingreso: junio-2006
Mensajes: 63
Antigüedad: 17 años, 10 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