Error: '...' does not name a type
<p>I had a working project. After rearranging some code, I tried to recompile my project and then weird things started happening. Have a look at this excerpt from the compiler's output. I'm compiling from Eclipse on Windows using MinGW G++.</p>

<pre><code>**** 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
</code></pre>

<p><em>board.h</em>, line 18:</p>

<pre><code>Piece* GetPieceAt(int row, int col) const;
</code></pre>

<p>Usually when that happens, I just have to add some inclusions I've forgotten to do. But I have in fact included <em>piece.h</em> at the top of <em>board.h</em>.</p>

<p>My second thought was that the compiler must have generated an error somewhere in the <code>Piece</code> class that would cause the compiler ignore the existence of the class, which in turn would cause more errors. In that case I'd look at the first compiler error, which I expected would be something about an error in <em>piece.cpp</em> or <em>piece.h</em>. But the first error isn't about <code>Piece</code> at all, so I looked if Eclipse had marked any errors in <em>piece.cpp</em> or <em>piece.h</em>. Nope, not a red line in sight. I only saw a few of <a href="http://img139.imageshack.us/img139/8529/yellowmarkers.jpg" rel="nofollow">these unexplained yellow markers</a>.</p>

<p>One last thing that I checked was that every header file contained inclusion guards, which they did.</p>

<p>How do I get to the bottom of this error? I'd post code snippets, but then I would probably end up pasting the entire code (which I can't do) because additional context may be necessary.</p>

<p><strong>Edit</strong>: here's <em>board.h</em> up to line 18. (I've left out a big comment, that explains why this block of code is smaller than you'd expect.)</p>

<pre><code>#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;
</code></pre>
