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:
VIsta.cpp contiene al principio #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); .....
#include "Vista.h"
#include "../controlador/Controlador.h"
Modelo.h
Código:
y Contiene algo parecido a vista.cpp#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); ...
Controlador.h
Código:
NO LO HE TOCADO DESDE EL PRINCIPIO, ASÍ QUE AQUI NO HAY PROBLEMA.#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){}; ...
...
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.