C ++类名称为数据类型

时间:2014-08-04 18:44:50

标签: c++ class

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

此代码适用于基本的俄罗斯方块游戏,它来自此网页: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作为数据类型?有人可以向我解释一下它的原因吗?或者它实现了什么?或者这是什么叫,所以我可以阅读更多关于它的内容?

1 个答案:

答案 0 :(得分:2)

Pieces *pPieces

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

class Pieces
{
   // ...
};