Du brauchst dort keine forward declaration.
Du brauchst auch keinen Pointer. Ein Object ist doch bereits ein Pointer. Bzw. Die Variable mit der du auf das Objekt zugreifst ist immer einer...
Ich habe gerade was aus einem meiner Templates kopiert (und natürlich etwas beschnitten
).
Dieser Node ist aber nicht für Performance ausgelegt sondern dafür, dass er die Liste und damit die darüberliegende Collection über Änderungen benachrichtigen kann
Delphi-Quellcode:
_TYPED_LIST_NODE_ = class(...,)
private
fNext: _TYPED_LIST_NODE_;
fPrevious: _TYPED_LIST_NODE_;
fData: _TYPED_LIST_LIST_DATA_;
...
protected
procedure setNext(const aValue : _TYPED_LIST_NODE_);virtual;
procedure setPrevious(const aValue : _TYPED_LIST_NODE_);virtual;
procedure setData(const aValue : _TYPED_LIST_LIST_DATA_);virtual;
...
public
property Next: _TYPED_LIST_NODE_ read fNext write setNext;
property Previous: _TYPED_LIST_NODE_ read fPrevious write setPrevious;
property Data: _TYPED_LIST_LIST_DATA_ read fData write setData;
...
constructor Create(...); overload;virtual;
constructor Create(aData: _TYPED_LIST_LIST_DATA_); overload;virtual;
destructor Destroy(); override;
end;