2013-08-05 6 views
1

Board.h'Класс' не называет тип

#ifndef BOARD_H 
#define BOARD_H 

#include "piece.h" 


class Board 
{ 
    public: 
     Board(bool); 
     //Piece * getPiece(int x, int y){return &pieceboard[x][y];} 
}; 

#endif 

Board.cpp

#include "Board.h" 

Board::Board(bool fill) 
{ 
... 
}; 

дает мне ошибку: 'Совет' не называет тип. Скомпилирован с gcc.

EDIT:

Кодекс составлен после того, как я был закомментирована #include "piece.h". По-видимому, в нем были некоторые необъявленные классы.

#ifndef PIECE_H 
#define PIECE_H 

#include "Board.cpp" 

class Piece{ 

    public: 
     virtual bool checkMove(int, int) =0; 
     bool movePiece(int, int); 
     int getX(){return x;} 
     int getY(){return y;} 
     char getChar(){return image;} 
     bool getWhite(){return isWhite;} 

    protected: 
     int x, y; 
     char image; 
     bool isWhite; 
    }; 

    class Pawn : public Piece{ 
    public: 
     Pawn(bool, int, int, Board); // ERROR: 'Board' has not been declared 
     bool checkMove(int, int); 
    private: 
     Board * board; };   // ERROR: 'Board' does not name a type 

#endif 
+1

Что делает 'шт.h'контейнер? Покажите нам контент. Похоже на случай кругового '# includes'. – Nawaz

+0

Имеет ли 'штука.h' некоторые ссылки на' Board' или что-то еще интересное? Ошибка может быть там. – DUman

+1

Эта точка с запятой ';' не требуется после определения конструктора 'Board :: Board' –

ответ

-3

Код в порядке. Я предполагаю, что ошибка связана с чем-то скрывающимся в «piece.h»

+5

Это не обеспечить решение проблемы и быть комментарием, а не ответом. –

+0

Но учитывая, что проблема заключается в фрагменте кода, который не предоставляется, это самое близкое к ответу, который можно было бы дать. –

+0

Он был прав. Код, составленный после того, как я прокомментировал это включение. – Soup

Смежные вопросы