6

クラスで演算子をオーバーロードすることは(Delphiで)可能ですか?少し前に、レコードでのみ可能であると読みましたが、以下のコードのようにクラスでも同様の情報を見つけました:

type
   TMyClass = class
     class operator Implicit(a: Integer): TMyClass;
   end;


class operator TMyClass.Implicit(a: Integer): TMyClass;
begin
   // ...
end;

次のアドレスから (変更) あります: http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/operatoroverloads_xml.html

しかし、(Delphi XE内で)使用しようとすると、次のようになります:

PROCEDURE、FUNCTION、PROPERTY、または VAR が必要です (E2123)

行列操作用の独自の単純なクラスを作成したいと考えており、クラス内で演算子のオーバーロードを使用できる可能性が非常に期待されています。

よろしく、 Artik

4

1 に答える 1

10

クラスの演算子のオーバーロードは、コンパイラの一部のバージョンで使用できます。.net および iOS コンパイラで使用できます。Windows および Mac の場合はサポートされていません。

iOS コンパイラは、ARC を使用してクラス インスタンスの有効期間を管理するため、これをサポートできます。デスクトップ コンパイラが ARC に切り替わる場合は、演算子のオーバーロードのサポートが期待できます。

Marco はこれについてブログを書いています: http://blog.marcocantu.com/blog/class_operators_delphi.html

于 2013-07-31T07:26:30.883 に答える