怎样使参数接受不同型号的(100分)

  • 主题发起人 主题发起人 sashion
  • 开始时间 开始时间
如果要接受不同类型的参数,那就重载这个函数:

function Test(I:integer)
overload;
function Test(S:String)
overload;
function Test(D:Double)
overload;

那调用这个函数时就可以传integer,string和Double型的参数。
 
如果我要传递的参数是对象类型,在《数据结构(用c++描述)》一书中,使用模板,使数据
结构具有通用性,在delphi中没有模板,用什么样的方法才能实现这种功能呢?谢谢!
 
在DELPHI中你可以直接将对象或结构类型做为参数传递。
我手头有一本《数据结构实用教程(c++描述)》,但我没有找到你所说的模板,
能不能具体一点?
 
我的这本书是清华的。举个例子吧,比如要写一个栈,这个栈要具有通用性,到具体要用的
时候,才确定栈元素的类型。这要如何实现?谢谢!
 
你的意思是不是这个栈不但可以压简单数据类型,还可以压对象类型,
且对象的具体类型不定?
 
variant或者用POINTER
 
用Variant吧。
我所用过的类似Template的东西只有使用Idispatch接口的variant变量了。
没办法,用Pascal就这样。
 
对,Variant可以是任何类型的数据或对象,就是占用空间大一点。
 
用Pointer?虚拟方法表怎么解决,这可不是类型强制转换的问题,否则你还得Invoke去。
 
听说,可以用TObject统一起来,但我不知如何实现。
各位大虾,你们认为可行不可行?可行的话如何实现?
 
可以的,TOBJECT实际上就是一个POINTER,
要想操作实际类里的属性,可以用RTTI机制,查询操作对象的属性。
如果你确定使用哪些类的话,可以使用类型转换。实际上,你的问题就象TNOTIFYEVENT

TNOTIFYEVENT=procedure(Sender:TOBJECT) of OBJECT;

这里,SENDER可以接收任何类。
 
如djdsz所说,推荐你看《Delphi5开发人员指南(Delphi 5 Developer's Guide)》
或《Delphi高级编程指南》,都是Borland的推荐用书,在上面可以好好研究一下
DELPHI的面向对象机制和RTTI。
 
能不能说得具体些?最好能给个例子。
 
参数用array of const,便能接受不同类型的
 
Variant
最有效
 
如果要传递对象类型,为什么不使用metaclass?
 
后退
顶部