Operator overloading C++;重载==运算符示例
下国际象棋时,我不能重载Operator overloading C++;重载==运算符示例,operator-overloading,c++14,Operator Overloading,C++14,下国际象棋时,我不能重载==操作符(若我在数组中添加了正确的元素,那个么这就是问题所在) /.ccp Board* piece; for(int x= 0; x < 8; x++) { for(int y=0; y < 8; y++) { piece->stanjePolja = squerState::ROOK; piece->bojaPolja = squerColor::WHITE; piece->bojaFiguri
==
操作符(若我在数组中添加了正确的元素,那个么这就是问题所在)
/.ccp
Board* piece;
for(int x= 0; x < 8; x++)
{
for(int y=0; y < 8; y++)
{
piece->stanjePolja = squerState::ROOK;
piece->bojaPolja = squerColor::WHITE;
piece->bojaFigurice = pieceColor::BLACK_PIECE;
board[y][x] = piece;
}
}
//绘制测试板
void Board::drawBoard()
{
for (auto y = 0; y < 8; y++)
{
for (auto x = 0; x < 8; x++)
{
if (board[y][x] == squerState::ROOK)
{
std::cout << 'O';
}
else
std::cout << 'X';
}
std::cout << std::endl;
}
}
谢谢 排队
if (board[y][x] == squerState::ROOK)
看起来左侧的表达式类型是Board*
,但右侧的表达式类型是enum squerState
。您没有为这些类型定义equals运算符,因此无法通过其他方式进行比较
您可能希望您的Board
类包含SquareState
实例数组
enum Piece { None, Pawn, ... };
enum Color { Black, White };
struct SquareState
{
Piece piece_;
Color color_;
};
struct Board
{
void drawBoard() const;
SquareState board_[8][8];
};
void Board::drawBoard() const
{
for( int i = 0; i < 8; ++i )
{
for( int j = 0; j < 8; ++j )
{
switch( board_[ i ][ j ].piece_ )
{
case Piece::None:
std::cout << " ";
break;
case Piece::Pawn:
std::cout << "P";
break;
// ...
}
}
std::cout << std::endl;
}
}
枚举块{None,Pawn,…};
枚举颜色{黑色,白色};
结构平方状态
{
一件一件;
颜色;
};
结构板
{
空抽油板()常数;
州议会[8][8];
};
空板::绘图板()常数
{
对于(int i=0;i<8;++i)
{
对于(int j=0;j<8;++j)
{
开关(板[i][j]。件号)
{
箱件::无:
请发一封信。
if (board[y][x] == squerState::ROOK)
if (board[y][x] == squerState::ROOK)
enum Piece { None, Pawn, ... };
enum Color { Black, White };
struct SquareState
{
Piece piece_;
Color color_;
};
struct Board
{
void drawBoard() const;
SquareState board_[8][8];
};
void Board::drawBoard() const
{
for( int i = 0; i < 8; ++i )
{
for( int j = 0; j < 8; ++j )
{
switch( board_[ i ][ j ].piece_ )
{
case Piece::None:
std::cout << " ";
break;
case Piece::Pawn:
std::cout << "P";
break;
// ...
}
}
std::cout << std::endl;
}
}