クラスを作成してテストすると、下の図にエラーが表示され、デバッグしようとすると、アクセスしたい属性が「アクセスできない値」であることがエディターに表示されます (コンストラクターは驚くほど機能します)。
前回この問題が発生したときは、コードを新しいユニットにコピーして古いユニットを削除するだけで問題を解決したので、プリコンパイルされた .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.