0

次の単純な型定義がコンパイルされないのはなぜですか?

type
  SomeType = class(TObject)
    ID: Cardinal;
  end;

  AnotherType = class(TObject)
    Some: SomeType;
    property ID: Cardinal read Some.ID;  // E2467
  end;

E2467レコードまたはオブジェクトタイプが必要ですこれは、レコードまたはオブジェクトではない変数からプロパティにアクセスしようとしたときに発生します。

しかし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 に答える