この小さなサンプル クラスを取り上げます (私の実際のコードではありませんが、問題が明らかになります)。
Convert = class(TObject)
public
class function ToString(value: Double): String; overload;
class function ToString(value: TDateTime): String; overload;
end;
Double
またはTDateTime
関数を次のように使用するまでは、問題なくコンパイルされます。
var
d: Double;
begin
d := 99.99;
ShowMessage(Convert.ToString(d));
次のコンパイル エラーが発生します。'ToString' へのあいまいなオーバーロード呼び出しです。TDateTime
問題は、それが一種であるという事実に要約されますDouble
私の質問: この種の問題にどのように対処しますか?
編集 - 与えられた例の解決策を探していません
これまでに3つのソリューションを見つけました:
- 2 つの関数のいずれかの名前を変更します
- 2 つの関数のいずれかに「ダミー」パラメーターを追加します。
- パラメータを Var 型に変更します。これには、この関数を定数で呼び出すことができなくなるという欠点があります
他に解決策はありますか?