我有一个类似于this的问题,但是在delphi中。
type
TThreadPopulator = class(TThread)
private
_owner:TASyncPopulator; //Undeclared identifier
end;
type
TAsyncPopulator = class
private
_updater: TThreadPopulator;
end;
上述问题的解决方案不适用于delphi
答案 0 :(得分:11)
请参阅Forward Declarations and Mutually Dependent Classes
文档。
type (* start type section - one unified section "to rule them all" *)
TAsyncPopulator = class; (* forward declaration *)
TThreadPopulator = class(TThread)
private
_owner:TASyncPopulator;
end;
TAsyncPopulator = class (* final declaration - WITHIN that very section where forward declaration was made *)
private
_updater: TThreadPopulator;
end;
使用来源,卢克!您的Delphi安装具有完整的VCL和RTL源,供您阅读,观看和学习。它经常使用这个模板。每次当你问自己“我怎么做”时,只要想想“Borland是怎么做的”,并且很有可能你已经在Delphi提供的资源中得到了一个现成的例子。
答案 1 :(得分:3)
在任何类定义之前使用它。转发类在Delphi 2010中工作。我不知道你有delphi的巫婆版本,但它是我能想到的唯一解决方案。
type
TAsyncPopulator = Class;
希望我帮助
答案 2 :(得分:0)
除了使用前向声明之外,您还可以创建一个子类来解决此问题:
TThreadPopulator = class(TThread)
type
TAsyncPopulator = class
_updater: TThreadPopulator;
end;
var
owner: TAsyncPopulator;
end;