函数中如何访问类的实例 ( 积分: 100 )

  • 主题发起人 主题发起人 hesc
  • 开始时间 开始时间
如果楼主明白类创建时做了些什么,就不会迷惑了。
类创建时,会分配内存,初始化对象内含的数据,创建VMT(虚拟方法表)等。
而类内的函数过程,在编译器编译单元文件时内存地址就已经确定了,因此你没有创建这个类的实例,也可调用他,比如,var st: Tstringlist;
st:= Tstringlist.create
你就在Tstringlist没有创建实例前调用了其 create方法。
而如果st在没执行上面的create语句之前,任何操作都是错误的,比如下面的错误语句
st.create;虽然编译可以通过,但不能正常执行。
这里的st只是一个“类变量”而不是类。没初始化时,它指向的是无效的或未知的内存地址。
 
这个类有N个实例,1百多个,我想在创建实例的时候保存实例的地址,然后在函数a里面通过实例地址来调用实例的方法b,如 Ta(实例地址).b, 关键是函数a里面如何判断是哪个实例调用了函数a
具体如何实现??
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部