Перегрузочный оператор присваивания для двумерного указателя

РЕДАКТИРОВАТЬ: Мы не используем векторы для этого, класс кусок прямо сейчас просто заглушен. Разные фигуры еще не существуют, и действительные ходы не рассматриваются. Доска отображает «P» в квадрате, если фигура есть, и пуста, если этот указатель указывает на ноль.

Я пытаюсь написать простую шахматную программу с использованием объектно-ориентированного программирования. Пока у меня есть доска, инициализированная для двухмерного массива указателей. Я могу разместить кусочки на доске, распечатать доску и переместить кусочки. Чтобы продолжить, мне нужно перегрузить оператор присваивания для класса платы. Класс это:

    #ifndef BOARD_H
#define BOARD_H

class Board;
#include "Piece.h"#include <iostream>
using namespace std;

#define MAXROWS 8
#define MAXCOLS 8

typedef Piece* PiecePtr;

class Board
{
public:
Board();
Board (const Board& other);
~Board();

bool move (int fromX, int fromY, int toX, int toY);
bool place (const PiecePtr& p, int x, int y);
bool remove (int x, int y);

void write (ostream& out) const;

Board& operator= (const Board& other);

private:
PiecePtr grid[MAXROWS][MAXCOLS];

void initBoard();
void clearBoard();
void copyBoard(const Board& other);
bool canMove (int fromX, int fromY, int toX, int toY);
};

ostream& operator<< (ostream& out, const Board& b);

#endif

До сих пор я написал оператор присваивания следующим образом:

Board& Board::operator= (const Board& other)
{
PiecePtr temp = NULL;
if(this != &other)
{
for(int x = 0; x < MAXCOLS; x++)
{
for(int y = 0; y < MAXROWS; y++)
{
temp = grid[x][y];
delete temp;
}
}
///////////keep going here
}return *this;
}

Я чувствую, что делаю это слишком сложным, насколько я понимаю, Правление& другим параметром будет левая часть оператора x = y. Я не понимаю, почему мои книги говорят, что память должна быть освобождена, и как что-то копируется, если мы сначала все удалим. Я попросил в школе, и мне сказали, чтобы подумать об этом. Так что помогло много. Если бы кто-то мог объяснить, где я ошибаюсь, я был бы очень признателен.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector