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.