循环参考修复?

sir*_*mic 4 delphi pascal

我在一个单独的单元中有一个Player类,如下所示:

TPlayer = class
private
  ...
  FWorld: TWorld;
  ...
public
  ...
end;
Run Code Online (Sandbox Code Playgroud)

我还在一个单独的单元中有一个世界级如下:

TWorld = class
private
  ...
  FPlayer: TPlayer;
  ...
public
  ...
end;
Run Code Online (Sandbox Code Playgroud)

我这样做是为了让玩家可以通过FWorld从世界获取数据,这样世界上的其他对象就可以以类似的方式获取玩家数据.

正如您所看到的,这会导致循环引用(因此不起作用).我已经读到这意味着糟糕的代码设计,但我想不出更好的其他方式.什么是更好的方法呢?

干杯!

500*_*ror 6

每隔一段时间就需要这个,然后你这样做:

//forward declaration:
TWorld = class;

TPlayer = class
private 
  FWorld: TWorld;
public
end;

TWorld = class
private
  FPlayer: TPlayer;
public
end;
Run Code Online (Sandbox Code Playgroud)