Delphi インターフェイス パラメータの処理の変更

提供: RAD Studio
移動先: 案内検索

Delphi のインターフェイス への移動


C++Builder 2010 リリース以降では、デフォルト値が nil である Delphi インターフェイス パラメータの処理が変更されています。void * 型を Delphi インターフェイスに代入すると、コンパイルが失敗するようになりました。

以前の Delphi コンパイラ(DCC32)は、インターフェイス パラメータがデフォルト値 nil を持つ場合、.hpp ファイル内に次のようなコードを生成しました。

  void methodName(_di_IIntf param = (void *)(0x0));

C++ コンパイラは、以前はこの構文を受け入れていましたが、それは不適切でした。2010 リリースからは、Delphi コンパイラと C++ コンパイラの両方で、この場合の処理が変更されています。

Delphi コンパイラは、デフォルト値が nil のインターフェイス パラメータに対して、.hpp ファイル内に次のようなコードを出力するようになりました。

   void methodName(_di_IIntf param = _di_IIntf());

C++ コンパイラは、Delphi インターフェイスに void * 型を代入するコードに対して、エラーを出力するようになりました。たとえば、次の行は

  void methodName(_di_IIntf param = (void *)(0x0));

コンパイルに失敗し、次のエラーが出力されます。

  'void *' を '_di_IIntf' に変換できません。

デフォルト値が nil のインターフェイス パラメータを含む Delphi コードがある場合は、DCC32 で再コンパイルしてください。ソースがない場合、.hpp ファイルを編集し、次のような箇所を

  void methodName(_di_IIntf param = (void *)(0x0));

すべて次のように変更してください。

  void methodName(_di_IIntf param = _di_IIntf());

関連項目