返回在类之后声明的数组的类的函数

时间:2015-07-14 15:41:20

标签: arrays delphi delphi-7

我以前没有办法解决这个问题。我有一个班级

  TRoom = class
   private
     width, length, X1,X2,Y1,Y2, index: integer;
   public
     function draw: RoomArr;      
     procedure setparam;
     function getparam: integer;
  end;

现在,在那之下,因为Delphi 7无法返回TClass的数组,我已经声明了这一点:

RoomArr = Array of TRoom;

这以某种方式解决了这个问题。不知道为什么,我只是在互联网上找到了这个解决方案

我正在使用" RoomArr"在其他功能,它正常工作,如预期的那样。 但是当数组在类之后声明(否则它不会知道类TRoom)时,TRoom本身(更确切地说是函数" draw")不能使用它。

有没有办法绕过这个问题?

提前致谢。

2 个答案:

答案 0 :(得分:5)

您需要forward declaration

type
  TRoom = class; // forward declaration

  TRoomArr = array of TRoom; // so that array type can be declared before class

  TRoom = class
    function Draw: TRoomArr; // and used by class
  end;

答案 1 :(得分:5)

TRoom的前瞻声明:

Type
  TRoom = class; // forward declaration

  RoomArr = Array of TRoom;

  TRoom = class
    ...
    function draw: RoomArr;
  end;

forward declaration必须在同一类型的部分中完成。