关于delphi类的问题啊!!大神们!!!!

unitunit1;//窗体主单元varForm1:TForm1;implementationusesGenericSpace;//申明单元2GenericSpacety... unit unit1; //窗体主单元
var
Form1: TForm1;

implementation

uses GenericSpace; //申明单元2 GenericSpace

type
arrayF2 = array of array of double;
arrayF1 = array of double;

xdata,ydata:arrayF1;
........
ULR1.ULR(xdata,ydata,N); //出错!!!!!!!!!!!!!!!!
........

unit GenericSpace; //用于放类的单元
interface
type
arrayF1 = array of double;
type
UnaryLinearRegression=class
private
xx:double;
public
procedure ULR(xdata,ydata:arrayF1; N:integer);
end;
implementation
........

、、、、、他说ULR1.ULR(xdata,ydata,N);出错,说的是主单元的arrayF1与放类的单元里的arrayF1不相符,这是怎么回事啊!!!!!!!!!!!
这个是变量的作用域的问题吗,感觉很奇怪,这怎么出错了!!
展开
 我来答
百度网友45e336d
2013-05-02 · TA获得超过684个赞
知道小有建树答主
回答量:416
采纳率:0%
帮助的人:378万
展开全部
你对DELPHI的类型机制有点不理解,我来给你答疑

你两个单元都是声明arrayF1 = array of Double,看起来类型一样、内容一样,实际是两个不同的类型,因为它们在编译时,类型的地址是不一样的!编译后程序并不会认"arrayF1"这个名字,只会认地址,所以编译器就会报你类型不匹配!

因此,你在unit1重新声明一次arrayF1完全就是画蛇添足!你引用了GenericSpace,直接就能用里面的arrayF1类型了。实在有特殊需要,就这样声明

type
arrayF1 = GenericSpace.arrayF1;
台浦泽4r
2013-05-01 · TA获得超过937个赞
知道小有建树答主
回答量:1249
采纳率:62%
帮助的人:643万
展开全部
procedure ULR(xdata,ydata:arrayF1; N:integer); 这一句放外面去试试。
追问
恩  我看来没说清楚!!
追答
你这样在ULR1中是不能调用unit1中的arrayF1的,要在ULR1中的implementation下面再申明一下:uses unit1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-05-01 · 超过22用户采纳过TA的回答
知道答主
回答量:208
采纳率:0%
帮助的人:67.1万
展开全部
奇葩问题啊!
追问
其实,我已经调试完成了,,只是不明白为什么不能再这样ULR(xdata,ydata:arrayF1; N:integer);
而非要这样ULR(xdata,ydata:array of double; N:integer);才可以!!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式