2015-02-10 6 views
0

Я начал работать с OOP сегодня в Delphi. Я создал простой «ящик» с функцией, которая возвращает том, когда пользователь вводит длину, ширину и высоту.Слишком много фактических параметров для моего собственного класса?

Вот мой класс:

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

ответ

4

Ваш конструктор является закрытым и поэтому не может быть замечен с другого устройства. Из другого блока можно увидеть конструктор без параметров, объявленный в TObject, и это то, что компилятор предполагает, что вы вызываете.

Сделайте свой конструктор общедоступным.

У вас будет такая же проблема, если вы хотите позвонить getVolume. Возможно, это предназначено для использования в качестве получателя имущества.

Ваш конструктор также выполняет свою инициализацию неправильно. Все три оператора присваивания неверны и требуют, чтобы их операнды были отменены.

Имена параметров конструктора не являются информативными. Как читатель может вывести свое использование из названий a, b и c?

+0

И та же проблема с getVolume –

+0

@AidanQuinn И измените 'a: = fL; ...' на 'fL: = a; ...' в теле constuctor. – Abelisto

+0

@Abelisto О да, конечно! Мне нужно проверить мои глаза. Я смотрю видео 240p, наш Департамент образования (Южная Африка) дал нам, очень расплывчато –

Смежные вопросы