Delphi インターフェイス パラメータの処理の変更
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());