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