Verursacht Konflikt mit Basisklasse...



  • Diese Fehlermeldung erhalte ich, wenn ich versuche die Funktion TEdit::AdjustSize zu redefinieren. Warum? Und wie kann ich die Funktion trotzdem redefinieren?

    class PACKAGE TIntEdit : public TEdit
    {
    private:
       void __fastcall AdjustSize()
       {
          Font->Height = ClientHeight;
       }
    protected:
    public:
       __fastcall TIntEdit(TComponent* Owner);
    };
    

    Vielen Dank im Vorraus ... äh Voraus 😃



  • Hallo Boto,

    AdjustSize ist in TControl als

    DYNAMIC void __fastcall AdjustSize(void);
    

    definiert.

    Also die sollte Funktionieren:

    class PACKAGE TIntEdit : public TEdit
    {
    private:
       DYNAMIC void __fastcall AdjustSize()
       {
          Font->Height = ClientHeight;
       }
    protected:
    public:
       __fastcall TIntEdit(TComponent* Owner);
    };
    

    Gruß
    Peter.



  • Schick! Danke Peter ... aber was genau macht dieses Dynamic? ... interessiert mich, da ich mich (leider) nicht so gut mit c++ auskenne ...

    LG



  • // sysmac.h
    #define DYNAMIC              __declspec(dynamic)                // For compatibility with Delphi's old virtual mechanism
    

    C++Builder 6-Dokumentation schrieb:

    __declspec(dynamic)

    Das Argument dynamic dient zur Deklaration von dynamischen Funktionen. Dynamische Funktionen ähneln virtuellen Funktionen, allerdings mit dem Unterschied, daß sie nur in den V-Tabellen für die Objekte gespeichert werden, in denen die Funktionen definiert sind, und nicht in V-Tabellen von Nachkommen. Wenn Sie eine dynamische Funktion aufrufen, die nicht in Ihrem Objekt definiert ist, wird die Funktion in den V-Tabellen seiner Vorfahren gesucht. Dynamische Funktionen sind nur bei Klassen zulässig, die von TObject abgeleitet sind.


Anmelden zum Antworten