Problem mit einer Klasse :)



  • Hallöchen.

    Ich habe in Delphi folgende Klasse

    type
      TAdvEditEditLink = class(TEditLink)
      private
       fEdit:TAdvEdit;
      protected
       procedure EditExit(Sender:TObject);
      public
       procedure CreateEditor(aParent:TWinControl); override;
       procedure DestroyEditor; override;
       function GetEditorValue:string; override;
       procedure SetEditorValue(s:string); override;
       function GetEditControl:TWinControl; override;
      end;
    

    und möchte dies in C++Builder übertragen, leider werde ich mit Errors erschlagen und weiss nicht genau wo der Fehler liegt. Wäre super wenn man mir unter die Arme greifen würde und bei der Lösung hilft. Danke 🤡

    Aktuell schaut es so aus

    class TAdvEditEditLink : TEditLink
    {
    private:
        TEdit *fEdit;
    protected:
        void EditExit(TObject *Sender);
    public:
        void CreateEditor(TWinControl *aParent); virtual;
        void DestroyEditor(); virtual;
        AnsiString GetEditorValue(); virtual;
        void SetEditorValue(AnsiString S); virtual;
        TWinControl *GetEditControl(); virtual;
    };
    
    [C++ Fehler] Unit1.h(27): E2113 Virtuelle Funktion 'TAdvEditEditLink::CreateEditor(TWinControl *)' verursacht Konflikte mit der Basisklasse 'TEditLink'
    [C++ Fehler] Unit1.h(27): E2321 Deklaration deklariert weder ein Tag noch einen Bezeichner.
    [C++ Fehler] Unit1.h(28): E2113 Virtuelle Funktion 'TAdvEditEditLink::DestroyEditor()' verursacht Konflikte mit der Basisklasse 'TEditLink'
    [C++ Fehler] Unit1.h(28): E2321 Deklaration deklariert weder ein Tag noch einen Bezeichner.
    ...
    


  • Bin schon glaub etwas weiter gekommen 😉
    Aber die letzte Zeile gibt es leider noch Fehler aus

    Delphi: function GetEditControl:TWinControl; override;
    C++Bilder: virtual __fastcall TWinControl GetEditControl(); // Error

    Weiss da wer weiter?

    class TAdvEditEditLink : TEditLink
    {
    private:
        TEdit *fEdit;
    protected:
        void __fastcall EditExit(TObject *Sender);
    public:
        virtual void __fastcall CreateEditor(TWinControl *aParent);
        virtual void __fastcall DestroyEditor();
        virtual __fastcall AnsiString GetEditorValue();
        virtual void __fastcall SetEditorValue(AnsiString S);
        virtual __fastcall TWinControl GetEditControl();
    };
    


  • welche Fehlern denn ?

    Du willst vermutlich einen Zeiger auf ein WinControl Feld bekommen also fehlt der Stern nach TWinControl:

    virtual __fastcall TWinControl* GetEditControl();



  • Danke, hab es bereits so gelöst und compiliert ohne Fehlermeldungen.
    Hoffe das stimmt so alles 🙂

    Controls::TWinControl* __fastcall GetEditControl();
    

Anmelden zum Antworten