TMetaClass??一个有深度的问题

phoex 2002-11-03 04:39:46
有一个控件中有这么一段DELPHI程序:
type
Ttmpb=class(Ttmpa)
end
Ttmpc=class of Ttmpa;//1
procedure Testfun;
var m:Ttmpc;
begin
m=Ttmpb;
end;
在编译成BCB以后,在头文件中(hpp).语句一变成了
typedef TMetaClass* Ttmpc;
1. class of 在delphi中应该是类指针,哪TMetaClass 是一个什么东东?
2. 我如何写一个BCB版本的Testfun?
void Testfun
{
//?????
}
...全文
147 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
RomanticProgrammer 2002-11-07
  • 打赏
  • 举报
回复
:)
  • 打赏
  • 举报
回复
把你的delphi源码和BCB源码都贴出来看看,当然不要像楼上一样乱糟糟的...:)
phoex 2002-11-07
  • 打赏
  • 举报
回复
To :cker(〖烟波浩淼三千里、人鬼殊途五百年〗)
编译是没有问题,但执行的结果和DELPHI的执行结果不同!
TopCat 2002-11-07
  • 打赏
  • 举报
回复
应该是所有类的领导吧?所有类的爸爸应该就是TObject。呵呵。
勉励前行 2002-11-07
  • 打赏
  • 举报
回复
TMetaClass就是TObject所有VCL類的爸爸。
  • 打赏
  • 举报
回复
嗬嗬,我明明编译过的...
哎...
TopCat 2002-11-07
  • 打赏
  • 举报
回复
你还是试一下这样的代码看看,不过我没测试过,因为实在看不出这个函数的用处:

void TestFun()
{
Ttmpc m;
m = __classid(Ttmpb);
}
phoex 2002-11-07
  • 打赏
  • 举报
回复
to cker(〖烟波浩淼三千里、人鬼殊途五百年〗
你的方法我测试了,不行!
mynameis007 2002-11-05
  • 打赏
  • 举报
回复
学习ing
  • 打赏
  • 举报
回复
void Testfun()
{
TClass m;
TImage* img = new TImage(NULL);

m = __classid(TImage);

m = img->ClassType();

delete img;
}
这个例子够清楚了吧....:)
kingcaiyao 2002-11-03
  • 打赏
  • 举报
回复
TMetaClass是一个元类,你用这个宏看看:__classid(类名)
TopCat 2002-11-03
  • 打赏
  • 举报
回复
class of 不是指针,而是“元类”,也就是你在BCB里看到的这个TMetaClass,它的含义是“类的类”,作用是可以管理所有的类,利用这个元类来获得例如某个类的类名、父类名等等的信息。

我也研究过一阵子TMetaClass,遗憾的是BCB的相关资料太少(Delphi的元类是编译器支持的),所以没有什么进展 :(

604

社区成员

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

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