2012-04-17 96 views
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)?如果這是預期的行爲,那麼我正在嘗試做什麼的正確方法是什麼?

+1

我猜 「對象類型」 在這裏指的老同學'object'('SOMETYPE = object'),不是一個類('類(TObject的)')。 – 2012-04-17 09:34:52

回答

4

的屬性訪問必須是直接的數據成員或該屬性屬於同一類的直接方法。

嘗試:

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

的錯誤信息幾乎說明了一切。 「Some.ID」不是記錄或對象。它是數據成員的數據成員 - 不同的事情。

+2

似乎是如此。我想知道爲什麼房產會受到這種限制... – 2012-04-17 09:41:34