Должны ли переменные конструктора класса быть назначены частным переменным класса или есть менее интенсивный код? - PullRequest
0 голосов
/ 14 октября 2019

При создании класса вы должны назначить его параметры частным переменным класса, чтобы использовать эти частные переменные в других процедурах и функциях класса. Это интенсивный код, так как вы должны определить одну и ту же переменную дважды.

Я пытался использовать параметр конструктора в процедуре того же класса, но он не работал без необходимости

type
    WorldObject=class

    private
        privX, privY, privStartSpriteNum, privEndSpriteNum:word;
        privDirection, privTurn:byte;

    public
        constructor create(x, y, startSpriteNum, endSpriteNum:word; direction, turn:byte);
        procedure draw;

constructor WorldObject.create(x, y, startSpriteNum, endSpriteNum:word; direction, turn:byte);
begin
    privX:=x;
    privY:=y;
    privStartSpriteNum:=startSpriteNum;
    privEndSpriteNum:=endSpriteNum;
    privDirection:=direction;
    privTurn:=turn;
end;

procedure WorldObject.draw;
begin
    writeLn(privX);
    writeLn(WorldObject.x);
end;

Ожидал writeLn (WorldObject.x) для печати значенияИкс. Но получил ошибку: Идентификатор идентификаторов отсутствует, член "х".

Нет ли способа использовать переменные параметров из конструктора, не передавая их в частные переменные?

Спасибо!

1 Ответ

1 голос
/ 14 октября 2019

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

...