Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - janezogre

#1
General Programadores / duda muy curiosa
28 de Octubre de 2007, 11:45:18 AM
He decidio plantear esta duda en el foro español porque con lo extraña que es, como me la expliquen en ingles creo que no me voy a enterar. Intentaré resumir lo que me pasa pero creo que la gente va a tener que exprimirse las neuronas porque realmente es un problema muy curioso.

Resulta que tengo una clase base A(archivo AAA.h) en la cual derivan dos clases derivadas B (archivo BBB.h) y C (archivo CCC.h). Por lo tanto:

ARCHIVO AAA.h

Class myclassA {
...................
};

ARCHIVO BBB.h

#include "AAA.h"
Class myclassB:public myclassA{
public:
bool funcionB();
..................
};

ARCHIVO CCC.h

#include "AAA.h"
Class myclassC:public myclassA{
public:
bool funcionC();
...................
};

ARCHIVO MAIN.cpp

#include "BBB.h"
#include "CCC.h"

INT WINAPI WinMain(...................){
.......................
B* objetoB = new B();
....................
C* objetoC = new C();
...........................

}

Mas o menos entendido todo??? Bien pues cuando compilo me sale el error:

c:\prueba1\AAA.h(11) : error C2011: 'VariablesFuente' : 'class' type redefinition
c:\prueba1\AAA.h(11) : see declaration of 'VariablesFuente'
c:\prueba1\BBB.h(11) : error C2504: 'VariablesFuente' : base class undefined
c:\prueba1\BBB.h(11) : error C2504: 'VariablesFuente' : base class undefined

Bueno, investigué como podía solucionar esto y descubrí que C++ permite multiples declaraciones pero solo una definición, por lo tanto me puse manos a la obra aplicando #ifndef, #define, ..... Y el programa me queda como esto:

ARCHIVO AAA.h

#ifndef AAA_h
#define AAA_h

Class myclassA {
...................
};
#endif

ARCHIVO BBB.h

#ifndef BBB_h
#define BBB_h
#include "AAA.h"
Class myclassB:public myclassA{
public:
bool funcionB();
..................
};
#endif

ARCHIVO CCC.h

#ifndef CCC_h
#define CCC_h
#include "AAA.h"
Class myclassC:public myclassA{
public:
bool funcionC();
...................
};

ARCHIVO MAIN.cpp

#ifndef AAA_h
#define AAA_h
class myclassA{};
#endif
#ifndef BBB_h
#define BBB_h
#ifndef AAA_h
#define AAA_h
class myclassA{};
#endif
class myclassB : myclassA{};
#endif


//#ifndef AAA_h
//#define AAA_h
//class myclassA{};
//#endif
#ifndef CCC_h
#define CCC_h
#ifndef AAA_h
#define AAA_h
class myclassA{};
#endif
class myclassC : myclassA{};
#endif

#include "BBB.h"
#include "CCC.h"

INT WINAPI WinMain(...................){
.......................
B* objetoB = new B();
....................
C* objetoC = new C();
...........................

}

Bien, pues despues de este coñazo que os he dado, voy y compilo y me sale estos errores :
c:\prueba1\main.cpp(281) : error C2039: 'funcionB' : is not a member of 'myclassB'
c:\prueba1\main.cpp(27) : see declaration of 'myclassB'
c:\prueba1\main.cpp(285) : error C2039: 'funcionC' : is not a member of 'myclassC'
c:\prueba1\main.cpp(29) : see declaration of 'myclassC'

JA!, ¿como se te queda el cuerpo???

Por favor, necesito saber que he hecho mal o si teneis una manera más sencilla de resolverlo.

Muchas gracias de antemano.
#2
Sabes programar en C++? ¿que tanta experiencia tienes? Tengo algo de experiencia

¿sabes algo de graficas por computadora? ¿manejas algun api como DirectX u OpenGL? Solo trabajo con el OGRE3D

¿Tienes algun tipo de experiencia en la programacion de videojuegos? Unos meses

¿Sabes usar algun programa de diseño o animacion? Si es asi, ¿cual es tu experiencia? utilizo algo el 3DStudio

¿que tanto tiempo estarias dispuesto a dedicarle al taller?1 hora diaria mas o menos

¿cual seria la principal razon por la cual abondonarias el curso (si es que la hay)? solo un cambio de trabajo

¿de que pais eres? España





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.