В Piece.h
вы можете форвард объявить Grid-класс. Прямое объявление означает, что вы сообщаете компьютеру, что определенный тип существует, но он еще ничего не знает о его размере или членах. Вы не можете пересылать объявление в Queen.h
, поскольку вам не разрешено наследовать от заранее объявленного класса. Кроме того, вам не разрешено хранить объявленный класс в качестве члена, вы можете хранить только указатель или ссылку на них.
//piece.h
// forward declaration of Grid
class Grid;
class Piece {
...
Grid *theBoard;
...
}
Обратите внимание, что в файле реализации piece.h
необходимо включить grid.h
, чтобы компилятор мог знать, какие методы могут быть вызваны на Grid
, но, поскольку этот #include
находится в файле реализации, вы не получите циклическую зависимость.