为什么不编译以下简单类型定义?
type
SomeType = class(TObject)
ID: Cardinal;
end;
AnotherType = class(TObject)
Some: SomeType;
property ID: Cardinal read Some.ID; // E2467
end;
它会在尝试从不是记录或对象的变量访问属性时发生E2467 Record or object type required,。
但是Some
是一个对象,对吗?这是编译器错误(我使用的是最新的XE2)?如果这是预期的行为,那么我正在尝试做什么的正确方法是什么?
答案 0 :(得分:4)
属性访问器必须是直接数据成员或属性所属的同一类的直接方法。
尝试:
AnotherType = class(TObject)
function GetId: cardinal;
property ID: Cardinal read GetId;
end;
错误消息几乎说明了一切。 “Some.ID”不是记录或对象。它是数据成员的数据成员 - 不同的东西。