Как использовать переменную из функции файла cpp для другой функции в файле anotehr cpp?

Я делаю игру в тетрис, и я не могу понять, как использовать переменную, которая вычисляет счет в другом файле, где он собирается выводить счет на экран. Вот код:

//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

Но получил сообщение об ошибке «Выражение должно иметь тип класса»

Я также попытался поместить все в один и тот же файл, но у меня тоже не получилось, плюс каждый файл содержит более ста строк кода.

-1

Решение

Вы должны вызывать функцию, а не назначать указатель функции. Используйте что-то вроде этого:

int Score = mBoard -> DeletePossibleLines();
//                                       ^^ note these!

Это предполагает действительный mBoard указатель, которого нет в коде, который вы разместили.

0

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

mBoard это указатель на Board объект. Предполагая, что он инициализирован правильно (чего нет в вашем фрагменте), вам не нужно разыменовывать его для вызова его методов. Кроме того, вам не хватает скобок (()) чтобы показать, что это вызов метода, а не открытый элемент данных:

int Score = mBoard -> DeletePossibleLines();
0

По вопросам рекламы [email protected]