如何在另一个 cpp 文件中的另一个函数上使用 cpp 文件函数中的变量?
How do I use a variable from a function of a cpp file on another function in anotehr cpp file?
我正在制作俄罗斯方块游戏,但我不知道如何在另一个文件中使用计算分数的变量,它将分数打印到屏幕上。这是代码:
//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 中的 class 中声明为:
//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;
}
我得到的错误是 "Error C2276: '*' : illegal operation on bound member function expression" IO.cpp
所以我希望 IO.cpp 的得分等于 Board.cpp
的 mScore
如果有帮助,这也是我尝试过但失败的方法:
我试图在 IO.cpp 中声明 class 是这样的:
//IO.cpp
Board mBoard
mBoard.DeletePossibleLines
但是得到一个错误 "Expression must have a class type"
我也试过把所有东西都放在同一个文件里,但我也失败了,而且每个文件都有一百多行代码。
您必须调用函数,而不是分配函数指针。使用这样的东西:
int Score = mBoard -> DeletePossibleLines();
// ^^ note these!
这假定一个有效的 mBoard
指针不存在于您发布的代码中。
mBoard
是指向 Board
对象的指针。假设它已正确初始化(您的代码段中缺少),您不需要取消引用它来调用它的方法。此外,您缺少方括号 (()
) 来表示这是一个方法调用而不是 public 数据成员:
int Score = mBoard -> DeletePossibleLines();
我正在制作俄罗斯方块游戏,但我不知道如何在另一个文件中使用计算分数的变量,它将分数打印到屏幕上。这是代码:
//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 中的 class 中声明为:
//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;
}
我得到的错误是 "Error C2276: '*' : illegal operation on bound member function expression" IO.cpp
所以我希望 IO.cpp 的得分等于 Board.cpp
的 mScore如果有帮助,这也是我尝试过但失败的方法:
我试图在 IO.cpp 中声明 class 是这样的:
//IO.cpp
Board mBoard
mBoard.DeletePossibleLines
但是得到一个错误 "Expression must have a class type"
我也试过把所有东西都放在同一个文件里,但我也失败了,而且每个文件都有一百多行代码。
您必须调用函数,而不是分配函数指针。使用这样的东西:
int Score = mBoard -> DeletePossibleLines();
// ^^ note these!
这假定一个有效的 mBoard
指针不存在于您发布的代码中。
mBoard
是指向 Board
对象的指针。假设它已正确初始化(您的代码段中缺少),您不需要取消引用它来调用它的方法。此外,您缺少方括号 (()
) 来表示这是一个方法调用而不是 public 数据成员:
int Score = mBoard -> DeletePossibleLines();