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;
     }
}