Delphiのクラスのコンストラクタのデフォルト引数がC++Builderでは反映されない件

概要

Delphiのクラスのコンストラクタのデフォルト引数がC++Builderでは反映されない。

検証環境

RAD Studio XE3 Update2で確認しました。
ターゲットプラットフォームは、32ビットWindows・64ビットWindowsの両方です。

再現方法

  1. Delphiでコンストラクタにデフォルト引数を持つクラスを作成する。
    type
      TSample = class
      public
        constructor Create(I: Integer=100);
      end;
    
  2. 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に登録していただけると助かります。

コメント

  1. 高橋智宏様
    コメントありがとうございます。
    デフォルト引数の件について了解しました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください