c++类名作为数据类型

C++ Class name as Data Type

本文关键字:数据类型 c++      更新时间:2023-10-16

我在编程方面处于中级水平,我遇到了一些我还没有学习的东西。

这个代码是一个基本的俄罗斯方块游戏,它来自这个网页:http://javilop.com/gamedev/tetris-tutorial-in-c-platform-independent-focused-in-game-logic-for-beginners/

这是他的头文件,定义了类Pieces:

#ifndef _PIECES_
#define _PIECES_
class Pieces
{
 public:
    int GetBlockType        (int pPiece, int pRotation, int pX, int pY);
    int GetXInitialPosition (int pPiece, int pRotation);
    int GetYInitialPosition (int pPiece, int pRotation);
};
#endif // _PIECES_

现在,在他的下一个头文件中,对于一个名为Board的类,他创建了一个构造函数原型,它将Pieces *pPieces作为参数。您可以看到如下内容:

class Board
{
 public:
     Board                       (Pieces *pPieces, int pScreenHeight);
     int GetXPosInPixels         (int pPos);
     int GetYPosInPixels         (int pPos);
     bool IsFreeBlock            (int pX, int pY);
     bool IsPossibleMovement     (int pX, int pY, int pPiece, int pRotation);
     void StorePiece             (int pX, int pY, int pPiece, int pRotation);
     void DeletePossibleLines    ();
     bool IsGameOver             ();
 private:
     enum { POS_FREE, POS_FILLED };                   
     int mBoard [BOARD_WIDTH][BOARD_HEIGHT]; // Board that contains the pieces
     Pieces *mPieces;
     int mScreenHeight;
     void InitBoard();
     void DeleteLine (int pY);
};
     #endif // _BOARD_

我以前从未遇到过这样的事情。我的问题是什么是*pPieces的声明,似乎使用类名Pieces作为数据类型?有人能给我解释一下原因吗?或者它实现了什么?或者这叫什么,这样我就能了解更多了?

Pieces *pPieces

pPieces是指向对象的指针。这个对象有一个类型。该类型是一个用户定义的类型,由一个名为Pieces的类声明。事实上,Pieces已经在代码中被声明为一个新类型:

class Pieces
{
   // ...
};