エラーは、「名前空間ChessGameで詳しく命名ませメンバーではありません推測ここで、関連するコードがC++コンパイラエラー。名前空間の問題私は私が手
ある//ChessPiece.h
namespace ChessGame
{
class ChessBoard;
namespace detail
{
class IChessPieceEnums{
public:
enum PieceType{PAWN, KNIGHT, BISHOP, ROOK, QUEEN, KING};
enum PieceDirection{ UP = 1 , DOWN = -1};
enum PieceId{ WHITE_PIECE_ID, BLACK_PIECE_ID };
};
}
//represents an abstract chess piece interface
class IChessPiece : public detail::IChessPieceEnums
{
public:
///...
}
} // end namespace
//GameBoard.h
#include "ChessPiece.h"
namespace ChessGame
{
class IChessPiece;
class ChessBoard
{
public:
/*********ERROR OCCURS ON THIS FUNCTION************/
bool isOccupiedWithEnemy(int row, int col,const ChessGame::detail::IChessPieceEnums::PieceId& pieceId);
}
}
任意のアイデアみんな
EDIT:。?別の最小限の例:
//Piece.h
#ifndef TestProject_C___Piece_h
#define TestProject_C___Piece_h
#include "Board.h"
namespace Foo {
namespace detail{
struct PieceEnums{
enum PieceID{ ID1, ID2 };
};
}
class Board;
class Piece{
public:
void foo(Board& b)const;
};
}
#endif
//board.h
#ifndef TestProject_C___Board_h
#define TestProject_C___Board_h
#include "Piece.h"
namespace Foo {
class Piece;
class Board{
bool isOcc(int x, int y,const detail::PieceEnums::PieceID pid)const;
};
}
#endif
、エラーが、これは、複数のファイル間結合を有するので、多分その問題であること
ノート「で宣言されていない識別子の詳細の使用?
構文エラーを修正すると、これはうまくコンパイルされます。 –
これはとても奇妙ですね... – dchhetri
pieceIdはなぜリファレンスですか?文字通りPieceIdでosOccupiedWithEnemyを呼び出すチャンスがありますか? – pezcode