【发布时间】:2010-11-05 17:52:46
【问题描述】:
我有 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);
现在我的问题是返回的对象是主类父类,如果没有将 CObject 类型转换为 CRock 的“createObject( OBJECT_ROCK )”,我不能在“myRock”上使用 Rock 函数,我不想拥有 3每个子类的功能。有任何想法吗?提前致谢。
【问题讨论】:
-
您可能来自 C++,因为您使用 C 为类添加前缀。在 Delphi 中,类以 T(类型)为前缀。没有参数的过程、函数、构造函数等不需要 ()。例如 Trock.Create;另请参阅样式指南:edn.embarcadero.com/article/10280