您好,并提前致谢。 我需要用C ++创建一个俄罗斯方块项目,我有板和类的类,但我想做一个初始化类,所以我正在做的是这个
#include "Initializer.h"
void Initializer::drawBoard()
{
}
// --------------------------------- Public Part ----------------------- //
Initializer::Initializer(Board *bBoard, Pieces *pPieces)
{
}
void Initializer::drawScene()
{
bBoard->showBoard();
}
这是董事会成员:
Board::Board(Pieces *mPieces)
{
for(int x = 0; x < 20; x++)
{
for(int y = 0; y < 10; y++)
{
mBoard[x][y] = 0;
}
}
}
void Board::showBoard()
{
for(int x = 0; x < 20; x++)
{
for(int y = 0; y < 10; y++)
{
if(mBoard[x][y] == 0)
{
cout << 0;
}
else
{
cout << "x";
}
}
cout << endl;
}
}
和主要功能
#include "Pieces.h"
#include "Board.h"
#include "Initializer.h"
#include <iostream>
using namespace std;
int main(int numeroArgumentos, char *argumentos[])
{
srand (time(NULL));
int randomNumber = rand() % 6;
Pieces mPieces;
Board bBoard(&mPieces);
Initializer iIOS(&bBoard, &mPieces);
bBoard.showBoard();
iIOS.drawScene();
return 0;
}
问题是,当我执行main函数时,我得到两个不同的结果,如图中所示(bBoard.showBoard是左边的结果,另一个是iIOS.drawScene())
我需要做些什么来获得具有这两个功能的正确电路板?
答案 0 :(得分:2)
你得到的是未定义的行为。 Initializer
的构造函数实际上并没有捕获board
中的值,因此它可能只是通过不属于它的内存运行。
答案 1 :(得分:1)
Initializer
构造函数需要将其参数保存在适当的成员变量中。只是命名与成员变量相同的参数不会自动执行此操作。您可以使用成员初始值设定项列表来执行此操作。
Initializer::Initializer(Board *bBoard, Pieces *pPieces): bBoard(bBoard), pPieces(pPieces) {}