TMyDataList<T: TBaseDatafile, constructor> = class(TObjectList<TBaseDatafile>)
public
constructor Create;
procedure upload(db: TDataSet);
end;
我在一篇博文中读到(我不记得现在在哪里),这是为泛型对象声明具有特定基类型的基于泛型的类的方法。编译器会接受它就好了。但是当我尝试使用它时,它决定不合作。
type
TDescendantList = TMyDataList<TDescendantDatafile>;
这给了我一个编译器错误。
[DCC 错误] my_database.pas(1145):E2010 不兼容的类型:“TDescendantDatafile”和“TBaseDatafile”
问题是, 1145 甚至不是有效的行。有问题的文件在#1142 结束,它所抱怨的类型声明在#20 行。这让我想知道这是否是编译器故障。还是我的语法不太正确?有谁知道使这项工作的方法?
编辑:吉姆指出,当他尝试它时,它编译得很好。更多信息:我在同一单元中声明了基本数据文件类型和通用列表,而 TDescendantDatafile 在第二个单元中,而 TDescendantList 在第三个单元中定义。我已经在 D2009 的编译器中发现并报告了一个错误,其中涉及泛型在多个单元中搞砸了类型。这可能是相关的。谁能证实这一点?