概要
Delphiのクラスのコンストラクタのデフォルト引数がC++Builderでは反映されない。
検証環境
RAD Studio XE3 Update2で確認しました。
ターゲットプラットフォームは、32ビットWindows・64ビットWindowsの両方です。
再現方法
- Delphiでコンストラクタにデフォルト引数を持つクラスを作成する。
type TSample = class public constructor Create(I: Integer=100); end;
- C++Builderにユニットを追加してプロジェクトをコンパイルする。
作成されたhppファイルには、コンストラクタのデフォルト引数が反映されていない。
class PASCALIMPLEMENTATION TSample : public System::TObject
{
typedef System::TObject inherited;
public:
__fastcall TSample(int I);
public:
/* TObject.Destroy */ inline __fastcall virtual ~TSample(void) { }
};
備考
なお、コンストラクタではなく、メンバ関数であればデフォルト引数は反映される。
Delphiの次のクラスをC++Builderでコンパイルすると、
type
TSample = class
public
procedure Func(I: Integer=100);
end;
次のようなhppファイルが作成される。
デフォルト引数は反映されている。
class PASCALIMPLEMENTATION TSample : public System::TObject
{
typedef System::TObject inherited;
public:
void __fastcall Func(int I = 0x64);
public:
/* TObject.Create */ inline __fastcall TSample(void) : System::TObject() { }
/* TObject.Destroy */ inline __fastcall virtual ~TSample(void) { }
};
最後に
QCに登録していただけると助かります。
As Designed です。私のコメントも参照してください。
http://qc.embarcadero.com/wc/qcmain.aspx?d=101649
高橋智宏様
コメントありがとうございます。
デフォルト引数の件について了解しました。