我自己班级的实际参数太多了?

时间:2015-02-10 14:15:40

标签: delphi

我今天开始在Delphi中使用OOP。我做了一个简单的'Box',其功能可以在用户输入长度,宽度和高度时返回音量。

这是我的班级:

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;

它给我一个错误Too many actual parameteres

1 个答案:

答案 0 :(得分:4)

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

让你的构造函数公开。

当您想要致电getVolume时,您会遇到同样的问题。也许这个意图被用作财产获取者。

您的构造函数也会错误地执行初始化。所有三个赋值语句都不正确,需要将其操作数反转。

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