Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Referencias cruzadas c++

Estas en el tema de Referencias cruzadas c++ en el foro de C/C++ en Foros del Web. Buenas! Estoy haciendo un pequeño programa en c++ y tengo el siguiento problema: archivo1.h:48: error: ISO C++ forbids declaration of ‘archivo1’ with no type archivo1.h:48: ...
  #1 (permalink)  
Antiguo 14/04/2007, 06:04
 
Fecha de Ingreso: abril-2007
Mensajes: 1
Antigüedad: 17 años
Puntos: 0
Referencias cruzadas c++

Buenas! Estoy haciendo un pequeño programa en c++ y tengo el siguiento problema:

archivo1.h:48: error: ISO C++ forbids declaration of ‘archivo1’ with no type
archivo1.h:48: error: expected ‘;’ before ‘*’ token

y el codigo es el siguiente:

archivo 1-------------------
#ifndef ARX1_H
#define ARX1_H
#include "archivo1.h"
[...codigo...]

#endif
--------------------------

archivo 2-------------------
#ifndef ARX2_H
#define ARX2_H
#include "archivo2.h"
[...codigo...]

#endif
--------------------------

He buscado por internet i he encontrado que este problema se llama referéncias cruzadas, y lo que sucede es que como se incluyen mutuamente esto implicaria no terminar nunca. Por esa razon se ponen los #ifdef, entonces pasa lo siguiente:

el primer archivo define la variable ARX1_H luego llama al archivo2.h y define la variable ARX2_H. Entonces al llegar al archivo2.h este intenta incluir al fichero1.h pero como ya esta definida la variable ARX1_H no lo hace con lo que desde el fichero2.h no puedo utilizar la clase del fichero1.h

No se si me he explicado muy bien espero que lo entendais.

Si alguien pudiese echarme una mano se lo agradeceria mucho.

Hasta pronto ;)
  #2 (permalink)  
Antiguo 14/04/2007, 11:31
Kal
 
Fecha de Ingreso: marzo-2007
Mensajes: 17
Antigüedad: 17 años
Puntos: 0
Re: Referencias cruzadas c++

Si en verdad ese es el problema, intenta leer sobre defined(), en los preprocesadores
  #3 (permalink)  
Antiguo 14/04/2007, 17:01
 
Fecha de Ingreso: febrero-2007
Mensajes: 25
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Referencias cruzadas c++

Lo que no entiendo es porque en "archivo1" estas incluyendo al mismo "archivo1". No será que "archivo1.h" lo incluyes en "archivo2.h"?

Ademas, a mi mas bien me parece otro tipo de error, ya que:

archivo1.h:48: error: expected ‘;’ before ‘*’ token

Quiere decir que en la linea 48 del "archivo1.h" te falto ponerle ";" y esto:

archivo1.h:48: error: ISO C++ forbids declaration of ‘archivo1’ with no type

Significa que en la mima linea 48 de "archivo1.h" declaraste "archivo1" sin tipo. Textualmente dice: "ISO C++ prohibe la declaracion de 'archivo1' sin tipo"

Entonces yo mejor te recomendaria pegar tus dos archivos fuente completos, para que te podamos decir mejor en que te estas equivocando.

Saludos!
  #4 (permalink)  
Antiguo 15/04/2007, 17:37
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Re: Referencias cruzadas c++

Mas bien, que corriga la linea 48 del programa. Seguro se le due algo ahi.
Saludos
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




La zona horaria es GMT -6. Ahora son las 03:22.