1

クラスを作成してテストすると、下の図にエラーが表示され、デバッグしようとすると、アクセスしたい属性が「アクセスできない値」であることがエディターに表示されます (コンストラクターは驚くほど機能します)。

前回この問題が発生したときは、コードを新しいユニットにコピーして古いユニットを削除するだけで問題を解決したので、プリコンパイルされた .dcu ファイルに関係があると思いました。残念ながら、このトリッキーな解決策はこのクラスでは機能しません。何か間違ったことをしたのでしょうか、それとも Delphi 7 が古くなっていることが原因なのでしょうか (私は Win8 で作業しています)。

unit UVector;

interface

uses

    SysUtils, Types;

type

    Vector2f = class

        private

           x : extended;
           y : extended;

        public

            function getX() : extended;
            function getY() : extended;
            constructor create(x,y : extended);
            procedure add(v : Vector2f);


        end;


implementation

constructor Vector2f.create(x,y : extended); // works!
begin
    self.x := x;
    self.y := y;
end;

procedure Vector2f.add(v : Vector2f);
begin
    //inc(x, v.getX());     // compiler error : left side cannot be assigned to
    //inc(y, v.gety());     // compiler error : left side cannot be assigned to
    self.x := self.x + v.getX(); //inaccessible value (at runtime) for x and getX()
    self.y := self.y + v.getY(); //inaccessible value (at runtime) for y and getY()
end;

function Vector2f.getX() : extended;
begin
    result := x;
end;

function Vector2f.getY() : extended;
begin
    result := y;
end;


end.

エラー

4

1 に答える 1