我正在檢查德爾福2009年試用版,但立即遇到了仿製藥問題。德爾福2009年泛型編譯問題
下面的代碼無法編譯,而我卻沒有絲毫的想法,爲什麼它給我的E2015的equals()方法:
type
TPrimaryKey<T> = class(TObject)
strict private
fValue: T;
public
constructor Create(AValue: T);
function Equals(Obj: TObject): boolean; override;
function GetValue: T;
end;
constructor TPrimaryKey<T>.Create(AValue: T);
begin
inherited Create;
fValue := AValue;
end;
function TPrimaryKey<T>.Equals(Obj: TObject): boolean;
begin
Result := (Obj <> nil) and (Obj is TPrimaryKey<T>)
and (TPrimaryKey<T>(Obj).GetValue = fValue);
end;
function TPrimaryKey<T>.GetValue: T;
begin
Result := fValue;
end;
爲什麼編譯器還認爲,F值和getValue的結果()不能比較?
由於Y的爲鏈接,以下睜開眼睛: 「泛型編譯之前,他們得到專門的 最終類型」 我認爲在C++模板方面是錯誤的,和德爾福泛型不是我的問題的解決方案。 – mghie 2008-11-07 08:18:33
錯字更正:我_guess_思... – mghie 2008-11-07 08:23:45