在 Pascal 中创建 class

Creating a class in Pascal

我试图在 Pascal 中创建一个 class,我对声明和语法有点困惑。最主要的是我得到了一个错误“Forward declaration not solved Tetromino.Rotate(LongInt)”,我读到我需要在实现部分声明我的过程,但我不确定我应该把它放在哪里。另外,如果您发现我的 class 声明有任何其他问题,请告诉我。

program Tetris;
{$MODE OBJFPC}
uses crt, sysutils;
type 
    Tetromino = class
    
    private
        TempFace : array [0..15] of char;       
    public
        Face : array[0..15] of char;
        //constructor create();  (idk what this is but read somewhere that you need it)
        procedure Rotate(rotation : integer);
    end;
var
    a,b,c,d,e,f,g : tetromino;
begin
    ReadKey();
end. 

在程序模块中不需要划分为interfaceimplementation。因此错误描述(执行 implementation section 中的程序)有点误导。尽管如此,它仍然表明缺少 Rotate() 过程的实现。

因此,错误是您在 Tetromino class 中声明了一个过程,但缺少该过程的实现。您需要在 class 声明和程序的 begin .. end 块之间的某处实现它。

在一个 unit 模块中,它有命名部分:interfaceimplementation,你在 interface 部分声明 classes(如果那些classes 可以从其他模块访问)并在 implementation 部分实现它们。

在下文中,我概述了您需要在程序中执行的操作,包括 Tetromino

的构造函数
program Tetris;
{$MODE OBJFPC}
uses crt, sysutils;
type 
    Tetromino = class
    private
        TempFace : array [0..15] of char;       
    public
        Face : array[0..15] of char;
        constructor create();  (idk what this is but read somewhere that you need it)
        procedure Rotate(rotation : integer);
    end;

var
    a,b,c,d,e,f,g : tetromino;

constructor Tetromino.create;
begin
  // constructor (automatically) aquires a block of memory
  // to hold members of the class
  // to do: initialize member fields of the instance
end;

procedure Tetromino.Rotate(rotation: Integer);
begin
  // implementation of the Rotate() method
end;

begin
    ReadKey();
end.