Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/05/2011, 06:09
Avatar de darkgaze
darkgaze
 
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 19 años
Puntos: 2
Problema con errores extraños. Metodología para encontrar error?

Hola amigos.

Tenía un programa completo que voy mejorando. Funcionaba hasta hoy, pero de repente ha dado este error en Modelo.h:

error: declaration of 'struct Vista::Controlador' // error 1 marcado abajo
error: changes meaning of 'Controlador' from 'struct Controlador' // error 2 marcado abajo


En principio se supone que tengo tres archivos. Controlador incluye vista y modelo, y para que no haya inclusión mutua hago el truco de poner la declaracion de la clase que incluye y la inclusión de la cabecera en el .cpp.


Vista.h:

Código:
#ifndef VISTA_H
#define VISTA_H

#include <iostream>
#include <SDL.h>
#include <SDL_opengl.h>
#include <SDL_ttf.h>
#include <gl\glu.h>
#include <vector>
#include <math.h>
#include <string>
#include "NodoGrafico.h"
#include "Camara.h"
#include "../utilidades/creadorMallas.h"
#include "../utilidades/objLoader/objLoader.h"
#include "../utilidades/gestorTexturas.h"

class Controlador;  // <--------- ERROR 2 AQUI

class Vista{
public:
        Vista(Controlador *cont);
     .....
VIsta.cpp contiene al principio

#include "Vista.h"
#include "../controlador/Controlador.h"



Modelo.h

Código:
#ifndef MODELO_H
#define MODELO_H

#include <string>
#include <map>
#include "Nodo.h"

class Controlador; // <<--------- ERROR 1 AQUI

class Modelo
{
    typedef std::map<std::string, Nodo*> parejaNodoNombre;

    public:
        Modelo(const Controlador *cont);
...
y Contiene algo parecido a vista.cpp

Controlador.h

Código:
#ifndef CONTROLADOR_H
#define CONTROLADOR_H
#define FPS_INTERVAL 1.0 //seconds.

#include <SDL.h>
#include <SDL_opengl.h>
#include <iostream>
#include <ctime>
#include "../vista/Vista.h"
#include "../modelo/Modelo.h"
#include "../modelo/Nodo.h"


class Controlador
{
    public:
        Controlador():_funcionando(true){};
...
NO LO HE TOCADO DESDE EL PRINCIPIO, ASÍ QUE AQUI NO HAY PROBLEMA.


...

Con esta situación he estado modificando especialmente Vista.h y modelo.h un poquitín.

Por qué de repente me dice esto?.

Es más, ¿por qué de repente me habla en algunos sitios de Vista::Controlador::funcion dentro de la clase controlador??. Por qué hace esa combinacion tan extraña?.

Ejemplo:

error: cannot define member function 'Vista::Controlador::inicializar' within 'Vista'

Cuando estoy en Controlador.cpp en esta funcion
int Controlador::inicializar(){


¿¿¿¿¿¿

Como puedo ir haciendo cambios para localizar el error?.

Gracias amigos.
__________________
Darkgaze