Tenía un proyecto en funcionamiento. Después de reorganizar un poco de código, traté de recompilar mi proyecto y luego comenzaron a suceder cosas extrañas. Eche un vistazo a este extracto de la salida del compilador. Estoy compilando desde Eclipse en Windows usando MinGW G ++.Error: '...' no nombra un tipo
**** Build of configuration Debug for project Pract2 ****
**** Internal Builder is used for build ****
g++ -O0 -g3 -Wall -c -fmessage-length=0 -omove.o ..\move.cpp
In file included from ..\/game.h:11:0,
from ..\/piece.h:10,
from ..\/move.h:10,
from ..\move.cpp:7:
..\/board.h:18:2: error: 'Piece' does not name a type
board.h, línea 18:
Piece* GetPieceAt(int row, int col) const;
Por lo general, cuando esto sucede, sólo tiene que añadir algunas inclusiones he olvidado de hacer. Pero de hecho he incluido pieza.h en la parte superior de placa.h.
Mi segundo pensamiento fue que el compilador debe haber generado un error en algún lugar de la clase Piece
que causaría que el compilador ignore la existencia de la clase, lo que a su vez causaría más errores. En ese caso, miraría el primer error del compilador, que esperaba que fuera un error en pieza.cpp o pieza.h. Sin embargo, el primer error no se trata de Piece
es en absoluto, así que miré si había marcado Eclipse cualquier error en piece.cpp o piece.h. No, no hay una línea roja a la vista. Solo vi algunos de these unexplained yellow markers.
Una última cosa que verifiqué fue que cada archivo de encabezado contenía guardias de inclusión, lo cual hicieron.
¿Cómo llego al final de este error? Publicaba fragmentos de código, pero probablemente terminaría pegando todo el código (lo cual no puedo hacer) porque puede ser necesario un contexto adicional.
Editar: aquí está board.h hasta la línea 18. (He dejado de lado un gran comentario, que explica por qué este bloque de código es más pequeña de lo que esperas.)
#ifndef BOARD_H_
#define BOARD_H_
#include "piece.h"
class Board {
public:
// Prototypes for externally defined functions
Board();
~Board();
void PrintBoard();
Piece* GetPieceAt(int row, int col) const;
Al menos publique el encabezado para board.h hasta la línea 18 si la respuesta a continuación de AndreyT no ayuda –