类引用问题(300分)

  • 主题发起人 主题发起人 陈冲伟
  • 开始时间 开始时间

陈冲伟

Unregistered / Unconfirmed
GUEST, unregistred user!
现声明了三个类,其继承关系如下:
type
TClass1 = class(TObject)
public:
constructor Create
virtual;
end;

TClass2 = class(TClass1)
public:
constructor Create
override;
end;

TClass3 = class(TClass2)
public:
constructor Create
override;
end


同时定义了两个类引用,如下:
type TClass1Ref = class of TClass1

TClass2Ref = class of TClass2;

在如下语句中使用:
var
MyClassRef: TClass1Ref;
MyClass: TClass1;
begin
MyClassRef := TClass3;
MyClass := MyClassRef.Create;
end;

结果发现第二句MyClassRef根本没有调用TClass3的Create方法,连TClass1的Create
方法也没有调用。

而将MyClassRef的类型声明为TClass2Ref,即:
var
MyClassRef: TClass2Ref;
MyClass: TClass1;
begin
MyClassRef := TClass3;
MyClass := MyClassRef.Create;
end

则第二句MyClassRef就会调用TClass3的Create方法,也是我所期望的结果。
请问第一种情况可能是由于什么原因造成的,如何解决?
 
关注此题
 
奇怪,经过测试你举的两个例子都有调用TClass3的Create方法.

我想看一下你是如何实现三个类的Create方法的?
 
肯定和你三个类(尤其是TCLASS1)的实现有关系,先看看你的实现吧
 
多人接受答案了。
 
后退
顶部