如何在另一个 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();