Kind-Klasse von TDataModule oder TForm und Stack Overflow

In C++ Builder Programmen kann es bei der Vererbung von TDataModule oder TForm Klassen zu einer bösen Überraschung in Form eines Stapelüberlaufs kommen:

class TInvoices : public TDataModule
{
    __published:

    private:
        int FCustomerId;
    public:
        // standard constructor
        __fastcall TInvoices( TComponent* Owner );
        // überladener constructor mit zusätzlichem parameter
        __fastcall TInvoices( TComponent* Owner, int ACustomerId );

        __property int CustomerId = { read=FCustomerId, write=FCustomerId };
};

Grund für den Stack Overflow ist der 2. Parameter (“int ACustomerId”) im überladenen constructor, der nachträglich eingefügt wurde.

Mögliche Lösungen des Problems:

  • Hinter dem 2. Parameter weitere Parameter anfügen
  • Die beiden Parameter vertauschen (int/TComponet)
  • Den Datentyp des 2. Parameter ändern (z.B. unsigned long anstelle von int)

Leave a Reply

Your email address will not be published. Required fields are marked *