Foros del Web » Programación para mayores de 30 ;) » Programación General »

Clases derivadas en c++... AYUDA!!!

Estas en el tema de Clases derivadas en c++... AYUDA!!! en el foro de Programación General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 28/07/2002, 13:47
 
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??
  #2 (permalink)  
Antiguo 29/07/2002, 07:46
 
Fecha de Ingreso: julio-2002
Mensajes: 10
Antigüedad: 21 años, 10 meses
Puntos: 0
Re: Clases derivadas en c++... AYUDA!!!

Debes crear el siguiente codigo en todos tus ficheros .H

Creas un define de una constante, la primera vez que el preprocesador pase por este codigo
la constante FIGURA_H no esta definida, con lo cual se incluirá el codigo del .H
La segunda vez la constante ya estara definda con lo cual el codigo no se incluirá

El error que te da es porque dentro de
"rectangulo.h" “elipse.h” hay dos includes de "figura.h"


#if |define FIGURA_H
#define FIGURA_H

class figura
{
.
.
.
.
}

#end if
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

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 12:07.