problemas en modularidad de programa

Agrupa todas las consultas sobre los lenguajes de programacion como C, C++, Python, Java ...

problemas en modularidad de programa

Notapor maije » Mié Jul 16, 2008 9:14 am

hola a tod@s. tengo el siguiente problema:
he hecho un programa para hacer andar a 'n' personajes por un escenario. el caso es que empece con un archivo class.h donde definia las clases frame y sprite y las funciones que necesitaba; despues el archivo class.cpp, donde implementaba las funciones que no eran get-set para manejar los graficos. despues en mi main.cpp le meti el codigo para mover a un personaje por la pantalla cargando las animaciones correspondientes. el caso es que ahora que me funciona todo, lo que quiero es modularizarlo un poco y la parte de carga de imagenes, en la que asocio cada frame de un array de 50 su imagen correspondiente y luego añado al sprite cada uno de los frames, quiero ponerla en otro archivo para que me ahorre espacio en el main.cpp, porque para un solo personaje no es mucho problema, pero cuando quiera cargar objetos, mas personajes, escenario y tal, me puede quedar un programa gigante. tambien quiero hacer lo mismo con la parte de movimiento del personaje. el caso es que creo un archivo nuevo llamado cargarGraficos.cpp, con una funcion void cargarGraficos(int personaje) { ... }, las variables de sprite y frame las declaro en el class.h y añado a cargarGraficos.cpp el class.h. ahi deberia de funcionar segun creo yo, pero me da un error que no entiendo:

Código: Seleccionar todo
  multiple definition of `frame'
  first defined here
  multiple definition of `sprite'
  first defined here
  ld returned 1 exit status
F:\PROGRAMACION\programacion C\proyectos cpp\moverCrupier\Makefile.win [Build Error]  [moverCrupier.exe] Error 1


dice que hay multiples definiciones de mi variable frame y de mi variable sprite, pero no es asi. solo estan declaradas en el class.h para que sean globales a todos los archivos que use sin tener que andar pasandolas constantemente...

alguna idea? uso DEV-CPP 4.9.9.2
muchas gracias por adelantado
atentamente
maije
maije
 
Mensajes: 20
Registrado: Lun Dic 17, 2007 6:20 pm

Re: problemas en modularidad de programa

Notapor hugoruscitti » Mié Jul 16, 2008 4:27 pm

maije escribió:dice que hay multiples definiciones de mi variable frame y de mi variable sprite, pero no es asi. solo estan declaradas en el class.h para que sean globales a todos los archivos que use sin tener que andar pasandolas constantemente...


Puede que el problema se deba a que el pre-compilador de
C++ esté incluyendo mas de una vez a tus archivos de cabecera
(.h).

Para evitar este problema casi todos los proyectos usan directivas
como "#ifdef" en cada archivo .h, te recomiendo veas la siguiente
página (en particular el apartado 4):

http://www.zator.com/Cpp/E4_9_10e.htm

Saludos.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Notapor maije » Lun Jul 21, 2008 2:00 pm

buenas hugo, en primer lugar gracias por responder, eres muy amable
en segundo, creo que lo tengo bien hecho en ese aspecto. en mi unico fichero de cabecera tengo escrito:

Código: Seleccionar todo
#ifndef FUNCIONES_H_
#define FUNCIONES_H_

... //definicion de clases

#endif


que segun lo que he leido en el link que me comentabas, si lo interprete bien, es lo que debia poner.

debo crear mas archivos de cabecera?. de momento tengo 1 que se llama funciones.h cuya implementacion esta en funciones.cpp. despues, tanto desde el main.cpp como desde el funciones.cpp, hago un #include "funciones.h". si yo quiero hacer un archivo cargarGraficos.cpp, debo hacerle un cargarGraficos.h o no hace falta? puede que sea ese el problema?

PD: siento la tardanza en responder, que esta es una epoca un poco mala de trabajo y muchos dias no se cuando me podre dedicar a mis cosas :-)

muchas gracias por adelantado
atentamente
maije
maije
 
Mensajes: 20
Registrado: Lun Dic 17, 2007 6:20 pm


Volver a Sobre lenguajes de programación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron