Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/07/2002, 13:45
Sebas22
 
Fecha de Ingreso: abril-2002
Mensajes: 34
Antigüedad: 22 años
Puntos: 0
Clases derivadas en C++ AYUDA!!!

Hola a todos:
Tengo un problema con un código C++ en el que uso clases derivadas… es muy sencillo lo que quiero hacer pero cuando compilo el main.cpp me genera un error de ejecución. Les paso a explicar. Tengo 3 clases, cuyas definiciones son estas:

//figura.h
class figura {
public:
virtual void obtDatos() = 0;
virtual void dibujar() = 0;
virtual void calcArea() = 0;
virtual void calcPerimetro() = 0;
};

//elipse.h derivada de la clase figura
#include "figura.h"
class elipse:public figura {
double radio_x;
double radio_y;
public:
elipse();
virtual void obtDatos();
virtual void dibujar();
virtual void calcArea();
virtual void calcPerimetro();
~elipse();
};

//rectangulo.h derivada de la clase figura
#include "figura.h"
class rectangulo:public figura {
double base;
double altura;
public:
rectangulo();
virtual void obtDatos();
virtual void dibujar();
virtual void calcArea();
virtual void calcPerimetro();
~rectangulo();
};

La implementación de todas ellas están en archivos CPP separados para cada clase. El main.cpp contiene el siguiente código:

#include <iostream.h>
#include "rectangulo.h"
#include “elipse.h”

void main () {
elipse *e;
e = new elipse;
rectangulo *r;
r = new rectangulo;
}

Fíjense que parece ser muy simple… sin embargo se me genera el siguiente error de compilación:

c:\archivos de programa\microsoft visual studio\myprojects\figuras\figura.h(1) : error C2011: 'figura' : 'class' type redefinition
Error executing cl.exe.

Es decir, se está redefiniendo la clase figura. Ahora bien, mi conformación del proyecto es la siguiente:

Clase figura (figura.h)
Clase elipse (elipse.h y elipse.cpp, derivada de clase abstracta figura)
Clase rectangulo (rentangulo.h y rectangulo.cpp, derivada de clase abstracta figura)

Como soluciono el problema de la redefinicion de la clase figura en main.cpp?? Debo hacer un archivo cpp general para todas las clases?? Alguna ayuda??