【发布时间】:2021-01-23 14:24:02
【问题描述】:
假设我有一个像这样声明本地类型的类:
type
TAncestor = class
type
TLocalType = (just, some, example);
end;
然后,我想在子类中使用该本地类型。但是,以下内容无法编译。
type
TChild = class (TAncestor)
procedure Test (AVariable: TLocalType); // error: undeclared identifier: 'TLocalType'
end;
为了使用该类型,似乎需要一个完全限定的类型名称。以下编译:
type
TChild = class (TAncestor)
procedure Test (AVariable: TAncestor.TLocalType);
end;
虽然这可行,但感觉相当不雅。 (另外,如果我想更改 TChild 的祖先,我必须更改两行中的类名。)我可能遗漏了一些东西;类型声明不是简单地从祖先继承的原因是什么?
【问题讨论】:
-
恐怕原因真的很无聊:这就是目前语言(或者,特别是编译器)的设计方式。
标签: delphi