函数如何重载?需要注意什么问题?(50分)

  • 主题发起人 主题发起人 L.Ming
  • 开始时间 开始时间
L

L.Ming

Unregistered / Unconfirmed
GUEST, unregistred user!
函数重载提示[Pascal Error] uSelect.pas(421): E1030 Invalid compiler directive: 'OVERLOAD'
这是怎么回事?
这两个函数是这样的

function Filter(AComPage: string;Aggregate: TArraySet): Boolean; overload;
function Filter(AComPage: string;Aggregate: TArraySet; AsuperiorMin,AsuperiorMax,AsubordinateMin,AsubordinateMax: integer):boolean;overload;
 
是在同一个类中吗?如果在同一个类中,不能有两个同名的函数。帮助里面有:
Within a class, you cannot publish multiple overloaded methods with the same name. Maintenance of runtime type information requires a unique name for each published member.

type

TSomeClass = class
published
function Func(P: Integer): Integer;
function Func(P: Boolean): Integer // error

说错了,是说在类published中,不能有两个同名的函数
 
楼上的好象说错了哦!
我的类就是两种创建的!
Tyuangong=class
id :integer;
name :string;
constructor create;overload;
constructor create(id:integer);overload;
end
好象编译的时候没什么问题
 
回 maikee1978:只要两个函数的参数不同,用加个在函数后面加个OverLoad;就可以了,(重载)。

你这两个函数用重载是没有题的。只是看你这两个函数的定义实在看不出有什么问题,你可以先删除这两个函数看看可不可以通过,可以的话再加上这两个函数,然后通过修改这两函数的参数再进一步确定问题出在那里,以前我也试过这种情况,死活都不给重载,但是后来又不知怎么的又可以了。
 
重载函数的第一个参数类型必须不同,就是靠这个来判断究竟该调入那一个函数
 
方法名相同,参数列表不同 就可以overload。 是错在别的地方了。
 
多人接受答案了。
 

Similar threads

后退
顶部