如何在anotehr cpp文件中的另一个函数上使用cpp文件函数中的变量?

时间:2015-05-10 20:35:20

标签: c++ tetris

我正在制作一个俄罗斯方块游戏,我无法弄清楚如何使用计算分数的变量在另一个文件中,它将打印分数到屏幕。这是代码:

//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必须有一个类类型”

我也尝试将所有内容放在同一个文件中,但我也失败了,加上每个文件都有超过一百行代码。

2 个答案:

答案 0 :(得分:0)

您必须调用该函数,而不是指定函数的指针。使用这样的东西:

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

这假设一个有效的mBoard指针,该指针在您发布的代码中不存在。

答案 1 :(得分:0)

mBoard是指向Board对象的指针。假设它已正确初始化(您的代码段中缺少),您无需为了调用其方法而对其进行解除。此外,您缺少括号(())来表示它是方法调用而不是公共数据成员:

int Score = mBoard -> DeletePossibleLines();