我正在制作一个俄罗斯方块游戏,我无法弄清楚如何使用计算分数的变量在另一个文件中,它将打印分数到屏幕。这是代码:
//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的分数等于Board.cpp的分数
这也是我尝试过的,如果它有帮助也会失败:
我试图在IO.cpp中声明这样的类:
//IO.cpp
Board mBoard
mBoard.DeletePossibleLines
但是出现了一个错误,上面写着“Expression必须有一个类类型”
我也尝试将所有内容放在同一个文件中,但我也失败了,加上每个文件都有超过一百行代码。
答案 0 :(得分:0)
您必须调用该函数,而不是指定函数的指针。使用这样的东西:
int Score = mBoard -> DeletePossibleLines();
// ^^ note these!
这假设一个有效的mBoard
指针,该指针在您发布的代码中不存在。
答案 1 :(得分:0)
mBoard
是指向Board
对象的指针。假设它已正确初始化(您的代码段中缺少),您无需为了调用其方法而对其进行解除。此外,您缺少括号(()
)来表示它是方法调用而不是公共数据成员:
int Score = mBoard -> DeletePossibleLines();