如何免费嵌套(对象类型)字段类?

Edu*_*aia 2 delphi oop rtti

TBaseClass = class
public
  destructor Destroy; override;
end;

TFirstClass = class(TBaseClass)
  FMyProp: string;
end;

TSecondClass = class(TBaseClass)
  FMyFirstClass: TFirstClass;
end;
Run Code Online (Sandbox Code Playgroud)

我需要实现一个DESTRUCTOR,它能够从同一个基类中找到所有(对象类型)字段并给它一个Free来避免所有这些内存泄漏.

为什么?因为FMyFirstClass可以创建或不创建,这取决于我的应用程序的流程,我无法保证何时将其创建为Free it,既不想用NIL检查所有析构函数来检查代码,因为我有一个很多像这样的领域.

我正在尝试使用新的RTTI来获取基于TBaseClass的所有字段,但我无法获得对象字段的实例,而且我没有想法.

我会走正路吗?你建议做什么?

Bar*_*lly 8

调用Free对nil实例没有影响.它是故意设计的.您的析构函数应该调用Free逻辑上拥有的任何对象类型的字段,与对象是否已构造无关.