有关于类引用的问题,

hellotao 2003-03-26 08:17:53
我注册了一个类TStackADT = class(TComponentThread)
但是我的TStackADT 类的Constructor 方法和Persistent 类的Constructor 方法不
一致,所以下面的方法会抱编译类型错误,

var
cls : TPersistentClass;
begin
cls := FindClass(className);
c := cls.Create(Name); --》 这里有个参数,
//

但是我发现我也没有办法强制类型转换,
TStackADT(cls).Create(Name)
显然是不可能的, 因为如果TStackADT 就是我要得到的类引用,

我用 TComponentThread(cls).Create(Name) 编译可以通过,
但是运行会包错,因为TComponentThread 是 cls 的父类,不能强制转换,
现在我该怎么办?















...全文
17 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellotao 2003-03-26
  • 打赏
  • 举报
回复
我自己搞定了,
自己编了一个Findclass 函数,
强制转换需要的类型就可以

alphax 2003-03-26
  • 打赏
  • 举报
回复
type
TStackADTClass = class of TStackADT;

cls := FindClose(ClassName);
TStackADTClass(cls).Create(Name);
hellotao 2003-03-26
  • 打赏
  • 举报
回复
另外如果 cls 定义为我自己定义的类引用,比如 class of TComponentThread 类型,
cls := FindClass(className) 又通不过了,
因为FindClass(ClassName) 返回TPersistentClass 类型,

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧