Я очень новичок в объектно-ориентированном программировании, и у меня возникли проблемы с правильной работой метода InitializeBoard в проекте скользящей головоломки. Я продолжаю получать сообщение об ошибке «выражение должно иметь тип указателя на объект» и другую ошибку, в которой говорится, что «нижний индекс требует массив или тип указателя». Вот код, над которым я сейчас работаю ...
// EXTERNAL DEPENDENCIES
#include "SlidingPuzzle.h"
// CONSTRUCTOR METHOD(S)
SlidingPuzzle::SlidingPuzzle() {
this->rows = 3;
this->cols = 3;
InitializeBoard();
}
SlidingPuzzle::SlidingPuzzle(int newRows, int newCols) {
// Attempt to set the requested number of rows
if (this->setRows(newRows) == false) {
this->rows = 3;
}
// Attempt to set the requested number of cols
if (this->setCols(newCols) == false) {
this->cols = 3;
}
InitializeBoard();
}
// SETTERS
bool SlidingPuzzle::setRows(int newRows) {
// Only accept the new number of rows if number is non-negative
bool newValueAccepted = false;
if (newRows > 0) {
this->rows = newRows;
newValueAccepted = true;
}
return newValueAccepted;
}
bool SlidingPuzzle::setCols(int newCols) {
// Only accept the new number of cols if number is non-negative
bool newValueAccepted = false;
if (newCols > 0) {
this->cols = newCols;
newValueAccepted = true;
}
return newValueAccepted;
}
// UTILITY METHOD(S)
void SlidingPuzzle::InitializeBoard() {
int count = 1;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
this->theBoard[i][j] = count;
count++;
}
}
}
Мне кажется, что все хорошо до конца кода, когда я пытаюсь написать метод инициализации платы. Кто-нибудь может диагностировать мои проблемы? Я думаю, что меня смущает то, как использовать указатель с массивом
---- EDIT -----
my header file...
// PRE-PROCESSOR
#ifndef __SLIDINGPUZZLE__
#define __SLIDINGPUZZLE__
#define COLOR_DEFAULT 7
#define COLOR_RED 12
#define COLOR_GREEN 10
#define SLIDE_UP 1
#define SLIDE_DOWN 2
#define SLIDE_LEFT 3
#define SLIDE_RIGHT 4
// EXTERNAL DEPENDENCIES
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
// SLIDING PUZZLE OBJECT SPECIFICATION
class SlidingPuzzle {
private:
int rows;
int cols;
int** theBoard;
public:
// CONSTRUCTOR METHOD(S)
SlidingPuzzle();
SlidingPuzzle(int newRows, int newCols);
// GETTER METHOD(S)
int getRows();
int getCols();
// SETTER METHOD(S)
bool setRows(int newRows);
bool setCols(int newCols);
// UTILITY METHOD(S)
void InitializeBoard();
void PrintBoard();
bool SlideTile(int directionCode);
void ScrambleBoard();
};
#endif