我有CObject作爲主要類和CRock,CDesk,CComputer從CObject派生。我想編寫一個讀取類枚舉的函數(可能類似於OBJECT_COMPUTER的整數)並返回特定的類型。功能返回類派生
實施例:
function createObject(iType : Integer) : CObject;
begin
case iType of
OBJECT_ROCK : Result := CRock.Create();
OBJECT_DESK : Result := CDesk.Create();
end;
end;
所以可以使用它是這樣的:myRock:=的CreateObject(OBJECT_ROCK);
現在我的問題是,返回的對象是父類的父類,我不能在'myRock'上使用Rock函數,而不需要從CObject到CRock類型轉換'createObject(OBJECT_ROCK)',我不想每個子類有3個功能。有任何想法嗎?提前致謝。
你可能來自C++,因爲你用C作爲類的前綴。在Delphi類中,前綴爲T(類型)。沒有參數的過程,函數,構造函數等不需要()。例如TRock.Create;另見風格指南:http://edn.embarcadero.com/article/10280 – Remko 2010-11-06 08:00:21