Ich suche nach einer Möglichkeit einer Vorwärtsdeklaration von zwei Klassen, die in zwei getrennten Units implemetiert sind:
type TGroupList = class;
TGroup = class (TObject)
GroupList : TGroupList;
end;
TGroupList = class (TObject)
List : array of TGroup;
end;
Dies ist das Verfahren, wie es, gemäß meiner Literatur zu Object-Pascal, möglich ist. Die zwei Klassen ermöglichen mir die Erstellung einer Gruppenhierachie, wie ich sie dann z.B. in einem TreeView darstellen kann.
Da jedoch beide Klassen, sowohl TGroup als auch TGroupList in der TGroup-Instanzen verwaltet werden, eine ganze Menge von Member-Prozeduren und -Funktionen enthalten, würde ich gerne diese zwei Klassen in zwei getrennten Units erstellen. Das Problem ist, daß Object-Pascal die Vorwärtsdeklaration einer Klasse: "TGroupList = class;" nur dann erlaubt, wenn die Klasse noch im selben "Type"-Abschnitt deklariert wird. Zumindest habe ich noch keine Möglichkeit gefunden, wie es anders gehen könnte.
Von C++ her (Watcom-C++-Compiler), habe ich häufig mit deratigen Konstrukten gearbeitet, und war froh über die Art der Modularisierung meiner Projekte, die u.a. durch eben deartige Verfahrensweisen ermöglicht wurden.
Es wäre daher meiner Arbeit mit Object-Pascal sehr dienlich, falls es eine Möglichkeit gibt, trotz Vorwärtsdeklaration mit mehreren Units arbeiten zu können.
Danke für Hinweise,
T. Frost
type TGroupList = class;
TGroup = class (TObject)
GroupList : TGroupList;
end;
TGroupList = class (TObject)
List : array of TGroup;
end;
Dies ist das Verfahren, wie es, gemäß meiner Literatur zu Object-Pascal, möglich ist. Die zwei Klassen ermöglichen mir die Erstellung einer Gruppenhierachie, wie ich sie dann z.B. in einem TreeView darstellen kann.
Da jedoch beide Klassen, sowohl TGroup als auch TGroupList in der TGroup-Instanzen verwaltet werden, eine ganze Menge von Member-Prozeduren und -Funktionen enthalten, würde ich gerne diese zwei Klassen in zwei getrennten Units erstellen. Das Problem ist, daß Object-Pascal die Vorwärtsdeklaration einer Klasse: "TGroupList = class;" nur dann erlaubt, wenn die Klasse noch im selben "Type"-Abschnitt deklariert wird. Zumindest habe ich noch keine Möglichkeit gefunden, wie es anders gehen könnte.
Von C++ her (Watcom-C++-Compiler), habe ich häufig mit deratigen Konstrukten gearbeitet, und war froh über die Art der Modularisierung meiner Projekte, die u.a. durch eben deartige Verfahrensweisen ermöglicht wurden.
Es wäre daher meiner Arbeit mit Object-Pascal sehr dienlich, falls es eine Möglichkeit gibt, trotz Vorwärtsdeklaration mit mehreren Units arbeiten zu können.
Danke für Hinweise,
T. Frost
Comment