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)