0

为什么下面的简单类型定义不能编译?

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)吗?如果这是预期的行为,那么做我想做的事情的正确方法是什么?

4

1 回答 1

4

属性访问器必须是属性所属的同一类的直接数据成员或直接方法。

尝试:

 AnotherType = class(TObject)
    function GetId: cardinal;
    property ID: Cardinal read GetId; 
 end;

错误消息几乎说明了一切。“Some.ID”不是记录或对象。它是数据成员的数据成员 - 不同的东西。

于 2012-04-17T09:20:06.677 回答