必须将类构造函数变量分配给私有类变量,还是需要较少的代码密集型方法?

问题描述 投票:0回答:1

创建类时,必须将其参数分配给私有类变量,以便在该类的其他过程和函数中使用那些私有变量。这是代码密集型的,因为您必须两次定义相同的变量。

我曾尝试在同一类的过程中使用构造函数参数,但必须这样做才行得通

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)打印x的值。但是出现了错误:标识符没有成员“ x”。

是否有一种方法,不必从构造函数中使用参数变量,而不必将其传递给私有变量?

谢谢!

freepascal
1个回答
1
投票

您似乎希望有一种机制,可将构造函数的参数自动存储在某个位置,以供以后检索。没有这种机制。存储您需要在构造函数范围之外引用的所有状态是您的责任。使用类的字段是执行此操作的经典方法。

© www.soinside.com 2019 - 2024. All rights reserved.