已討論帶可選數據字段的頂點類SKIP GENERIC PARAMETER ON DEMAND;對我來說,最好的解決辦法是這樣的:通用和非通用頂點類型的圖類
type
TVertex = class
public
Name: String;
OutputAttributes: TVertexOutputAttributes;
Marker: Boolean;
end;
type
TVertex<T> = class(TVertex)
public
Data: T; // User-defined data attribute
end;
雖然現在寫我想出了一個進一步的問題所連接的圖形類:
TGraph = Class
private
Vertices: TObjectList<TVertex>;
....
function addVertex(u: TVertex): Integer;
function removeVertex(u: TVertex): TVertex;
end;
所有功能要求我的頂點類Tvertex權的非通用版本現在。擴展我的Graph類以使用兩個頂點類定義(通用Tvertex和非通用一個TVertex)的最佳方式是什麼?我嘗試了下面的代碼,但沒有成功。
// a generic class working with 2 Tvertex class definitions ...
// this code does npot work :-(
TGraph<MyVertexType> = Class
private
Vertices: TObjectList<MyVertexType>;
....
function addVertex(u: MyVertexType): Integer;
function removeVertex(u: MyVertexType): MyVertexType;
end;
我不明白這個問題。你是什麼意思:*所有函數現在請求我的頂點類的非通用版本*? –
在我看來,你正在尋找一個訪問者模式作爲泛型頂點的處理程序 –
我想最相關的問題是 - 它有什麼問題?當然如果有問題需要解決,那就處於實施層面。如果我們不知道實施是什麼,我們如何提供指導? –