Librerias en C++

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

Librerias en C++

Notapor pablo9891 » Sab Ene 29, 2011 5:50 am

Basicamente para mi futuro juego, tengo decidido realizar un pequeño engine grafico, pero me surgio la duda acerca de como puedo en un solo archivo header realizar el llamado a varios headers al mismo tiempo, es decir, que cuando yo llamo a la liberia engine.h, al mismo tiempo esta este inocando a la libreria audio.h, video.h, etc. y de esta manera poder generar objetos con todas las clases que estas librerias a las que llamo mediante engine.h, creo que se puede realizar mediante el uso de namespaces pero no estoy muy seguro, si alguno me puede dar una mano le estaria agradecido.
pablo9891
 
Mensajes: 32
Registrado: Lun Dic 28, 2009 2:48 am

Re: Librerias en C++

Notapor carlostex » Sab Ene 29, 2011 6:59 am

Cuando haces un include el precompilador copia el código del include y lo pega al archivo donde se llamo al include.
Así como lo estás pensando esta bien, tienes un archivo engine.h en el llamas a audio.h, graficos.h, etc. en engine.h podrás usar todo las funciones que tengas en esos archivos y supongamos que engine.h es incluido en el archivo game.h en el archivo game.h podras hacer uso de las funciones de engine.h y de todas la bibliotecas que ya incluiste, por lo que esto puede causar problemas por que el compilador no dejará que definas dos veces una función o clase, para eso se usan las directivas del precompilador.
en todos los include que tengas pones los siguiente. (por ejemplo el archivo audio.h)
#ifndef AUDIO_H
#define AUDIO_H

tu código

#endif

a cada archivo le pones un define que tu quieras así evitas duplicar definiciones.
y por ultimo eso de los namespace no sirve para esto, los namespace sirven para evitar que los nombres de funciones o clases se repitan un ejemplo burdo: supón que creas una función que se llame cout para imprimir un texto en tu juego pero claro dependiendo de las mañas de cada programador pone al principio
Código: Seleccionar todo
use namespace std
esto puede crear un conflicto de nombres(suponiendo que el compilador detectó una ambigüedad que le impidió sobrecargar las funciones).
La manera de resolverlo es que tu declares un espacio de nombres que contenga esa función, de hecho lo recomendable es declarar un espacio de nombres para todo tu engine.
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico


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