2016-02-12 68 views
3

我想在父子對象的樹中有一個繼承鏈。Delphi - 對象樹中的繼承鏈

比方說,我有一個obj類型A,它有一個A的數組,但也是一個數組B. B是具有C的數組的另一個對象。 C從一個繼承,但略作修改A. 的版本,所以我必須:

type 
A= class 
    fArrayOfA : Array of A; 
    fArrayOfB : Array of B; 
end; 

C= class(A) 
//body 
end; 

B= class 
    fArrayOfC : Array of C; 
end; 

似乎對象的順序是非常重要的,而Delphi編譯器從上往下讀。所以「B陣列」在A中給出了一個未聲明的標識符,除非我把A的類型放在A以上。但是,我得到了B中的「C的數組」的錯誤,因爲它不知道C是什麼。

任何想法,如果有任何標識符丟失,將解決這個問題?我嘗試將A分解爲unit1,將B & C分解爲unit2,現在我有「循環參考」!

回答

3

你可以做所謂的「前鋒類」定義;

TB = class; // Forward Class 

TA = class(TSomething) 
    ..... 
end; 

TB = class(TSomething) 
    ..... 
end; 

它基本上允許TA瞭解TB之前它完全聲明。在Delphi幫助下閱讀Classes and Objects (Delphi)

+0

不知道我能做到這一點。非常感謝! – Alexander

+2

重要的是要注意,聲明需要在同一個「類型」部分。 –