Я делаю игру в тетрис, и я не могу понять, как использовать переменную, которая вычисляет счет в другом файле, где он собирается выводить счет на экран. Вот код:
//board.cpp
//Here is the variable mScore that i want to use
/*
======================================
Delete all the lines that should be removed
======================================
*/
int Board::DeletePossibleLines ()
{
int Score = 0;
for (int j = 0; j < BOARD_HEIGHT; j++)
{
int i = 0;
while (i < BOARD_WIDTH)
{
if (mBoard[i][j] != POS_FILLED) break;
i++;
}
if (i == BOARD_WIDTH)
{
DeleteLine(j);
Score++;
}
}
int mScore = Score;
return mScore;
}
Это объявлено в классе в Board.h как это:
//Board.h
class Board
{
public:
int DeletePossibleLines();
}
И я хочу использовать его в IO.cpp, я попробую это:
//IO.cpp
#include "Board.h"
void IO :: text()
{
//I call the class
Board *mBoard
//I attribute the function to a variable and i get an error
int Score = *mBoard -> DeletePossibleLines;
}
Я получаю ошибку «Ошибка C2276:« * »: недопустимая операция с выражением функции связанного члена» в IO.cpp
Поэтому я хочу, чтобы оценка из IO.cpp была равна mScore из Board.cpp
Вот также то, что я попробовал и потерпел неудачу, если это помогает:
Я попытался объявить класс в IO.cpp следующим образом:
//IO.cpp
Board mBoard
mBoard.DeletePossibleLines
Но получил сообщение об ошибке «Выражение должно иметь тип класса»
Я также попытался поместить все в один и тот же файл, но у меня тоже не получилось, плюс каждый файл содержит более ста строк кода.
Вы должны вызывать функцию, а не назначать указатель функции. Используйте что-то вроде этого:
int Score = mBoard -> DeletePossibleLines();
// ^^ note these!
Это предполагает действительный mBoard
указатель, которого нет в коде, который вы разместили.
mBoard
это указатель на Board
объект. Предполагая, что он инициализирован правильно (чего нет в вашем фрагменте), вам не нужно разыменовывать его для вызова его методов. Кроме того, вам не хватает скобок (()
) чтобы показать, что это вызов метода, а не открытый элемент данных:
int Score = mBoard -> DeletePossibleLines();