Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 我自己的类的实际参数太多了?_Delphi - Fatal编程技术网

Delphi 我自己的类的实际参数太多了?

Delphi 我自己的类的实际参数太多了?,delphi,Delphi,我今天开始在Delphi中使用OOP。我制作了一个简单的“框”,其中包含一个函数,当用户输入长度、宽度和高度时,该函数将返回音量 这是我的班级: unit clsBox; interface uses SysUtils; Type TBox = class(TObject) private fL, fB, fH : Integer; constructor Create (a, b, c : Integer); function getVolume : Integer

我今天开始在Delphi中使用OOP。我制作了一个简单的“框”,其中包含一个函数,当用户输入长度、宽度和高度时,该函数将返回音量

这是我的班级:

unit clsBox;
interface
uses
  SysUtils;
  Type
  TBox = class(TObject)
  private
  fL, fB, fH : Integer;
  constructor Create (a, b, c : Integer);
  function getVolume : Integer;
  public
  end;
implementation
{ TBox }
constructor TBox.Create(a, b, c: Integer);
begin
  a := fL;
  b := fB;
  c := fH;
end;

function TBox.getVolume: Integer;
begin
  Result := fL*fb*fh;
end;

end.
我还为原始单元的私有部分中的框创建了变量

myBox : TBox;
但当我尝试这个:

procedure TForm1.btnGetVolumeClick(Sender: TObject);
var
  l,b,h : Integer;
begin
  l := StrToInt(edtLegth.Text);
  b := StrToInt(edtBreadth.Text);
  h := StrToInt(edtHeight.Text);
  myBox := TBox.Create(l,b,h); //<---- here
end;
过程TForm1.btnGetVolumeClick(发送方:TObject);
变量
l、 b,h:整数;
开始
l:=stroint(edtLegth.Text);
b:=stroint(edtwidth.Text);
h:=stroint(edtwheight.Text);

myBox:=TBox.Create(l,b,h)// 您的构造函数是私有的,因此无法从其他单元中看到。在另一个单元中,可以看到
TObject
中声明的无参数构造函数,这就是编译器假定您正在调用的内容

公开你的构造函数

当您想调用
getVolume
时,也会遇到同样的问题。也许这是为了用作属性获取程序

构造函数的初始化也不正确。所有三个赋值语句都不正确,需要反转它们的操作数


构造函数参数的名称不提供信息。读者如何从名称a、b和c推断出它们的用途?

您的构造函数是私有的,因此无法从其他单元中看到。在另一个单元中,可以看到
TObject
中声明的无参数构造函数,这就是编译器假定您正在调用的内容

公开你的构造函数

当您想调用
getVolume
时,也会遇到同样的问题。也许这是为了用作属性获取程序

构造函数的初始化也不正确。所有三个赋值语句都不正确,需要反转它们的操作数


构造函数参数的名称不提供信息。读者如何从名称a、b和c中推断出它们的用途?

以及与之相同的问题getVolume@AidanQuinn并更改
a:=fL
fL:=a在构造者的身体里。@Abelisto哦,是的,当然!我需要检查一下眼睛。我正在看我们教育部(南非)给我们的240便士的视频,非常有趣blurry@DavidHeffernan我只是在学习我的教程,我同意,它们很糟糕,可能是为什么我也很困惑,艾丹,你在用什么教程?我们需要知道不要把它推荐给其他人。同样的问题也发生在我们身上getVolume@AidanQuinn并更改
a:=fL
fL:=a在构造者的身体里。@Abelisto哦,是的,当然!我需要检查一下眼睛。我正在看我们教育部(南非)给我们的240便士的视频,非常有趣blurry@DavidHeffernan我只是在学习我的教程,我同意,它们很糟糕,可能是为什么我也很困惑,艾丹,你在用什么教程?我们需要知道不要把它推荐给别人。