Problem bei Klassen-Deklaration (war: Fehlermeldung ...)



  • #include <vcl.h>
    
    class CallDialog
    {
        private:
        int DialogType;
        AnsiString FileName;
    
        public:
        int SetDialogType (int);
        void CallOpenDialog (TOpenDialog);
        void CallSaveDialog (TSaveDialog);
        AnsiString GetFileName ();
    
    };
    
        int CallDialog::SetDialogType (int RecievedDialogType)
        {
             int Indikator=0;
             if ((RecievedDialogType == 1) || (RecievedDialogType == 2))
             {
                  DialogType = RecievedDialogType;
                  Indikator=1;
             }
             else
             {
                  Indikator=0;
             }
             return Indikator;
        }
    
        void CallDialog::CallOpenDialog (TOpenDialog *OpenDialog)
        {
             OpenDialog->Excecute();
             FileName = OpenDialog->FileName;
        }
    
        void CallDialog::CallSaveDialog (TSaveDialog *SaveDialog)
        {
             SaveDialog->Excecute();
             FileName = SaveDialog->FileName;
        }
    
        AnsiString CallDialog::GetFileName ()
        {
             return FileName;
        }
    

    [C++ Fehler] CallDialog.h(35): E2316 'CallDialog::CallOpenDialog(TOpenDialog *)' ist kein Element von 'CallDialog'
    [C++ Fehler] CallDialog.h(41): E2316 'CallDialog::CallSaveDialog(TSaveDialog *)' ist kein Element von 'CallDialog'

    Was bedeutet dieser Fehler, ich such und such und find einfach nix. Hoffe mir kann jemand helfen!
    Danke
    MfG Giovanni

    Edit:
    Bitte die Code-Tags benutzen, und bitte aussagekräftige Überschriften wählen. Danke!



  • Giovanni schrieb:

    class CallDialog
    {
        void CallOpenDialog (TOpenDialog);
    };
    
    void CallDialog::CallOpenDialog (TOpenDialog *OpenDialog)
    {
    }
    

    Finde den Unterschied ... 🙂



  • #include <vcl.h>
    
    class CallDialog
    {
        private:
        int DialogType;
        AnsiString FileName;
    
        public:
        int SetDialogType (int);
        CallOpenDialog (TOpenDialog *OpenDialog);
        CallSaveDialog (TSaveDialog *SaveDialog);
        AnsiString GetFileName ();
    
    };
    
        int CallDialog::SetDialogType (int RecievedDialogType)
        {
             int Indikator=0;
             if ((RecievedDialogType == 1) || (RecievedDialogType == 2))
             {
                  DialogType = RecievedDialogType;
                  Indikator=1;
             }
             else
             {
                  Indikator=0;
             }
             return Indikator;
        }
    
        CallDialog::CallOpenDialog (TOpenDialog *OpenDialog)
        {
             OpenDialog->Excecute();
             FileName = OpenDialog->FileName;
        }
    
        CallDialog::CallSaveDialog (TSaveDialog *SaveDialog)
        {
             SaveDialog->Excecute();
             FileName = SaveDialog->FileName;
        }
    
        AnsiString CallDialog::GetFileName ()
        {
             return FileName;
        }
    

    [C++ Fehler] CallDialog.h(35): E2316 'Excecute' ist kein Element von 'TOpenDialog'
    [C++ Warnung] CallDialog.h(37): W8070 Funktion sollte einen Wert zurückgeben.
    [C++ Fehler] CallDialog.h(41): E2316 'Excecute' ist kein Element von 'TSaveDialog'
    [C++ Warnung] CallDialog.h(43): W8070 Funktion sollte einen Wert zurückgeben.

    Sorry ich kriegs einfach nicht hin. Kann mir jemand bitte helfen?

    Edit:
    Bitte die Code-Tags benutzen. Danke!



  • 1. #include <Dialogs.hpp>

    2. void/int/String/etc. CallOpen...(..)

    3. steht das Ganze bei dir in der header Datei ??



  • dschensky schrieb:

    Finde den Unterschied ... 🙂

    Damit wollte ich zum Ausdruck bringen, daß sich die Signatur der Methode in der Klassen-Deklaration von der Definition unterscheidet (Parameter-Typ stimmt nicht überein).



  • Das hat er noch verstanden. Aber nicht, dass seine Funktionen keine Konstruktoren sind.



  • Xqgene schrieb:

    Das hat er noch verstanden. Aber nicht, dass seine Funktionen keine Konstruktoren sind.

    Das habe ich jetzt wiederum nicht verstanden. Was hat das Problem mit
    Konstruktoren zu tun? 😕

    Gruß,

    Alexander



  • Weil IHMO ohne Rückgabetyp sollen nur Konstruktoren deklariert werden (Auch wenn der Compiler das zulässt):

    class CallDialog 
    { 
    ...
    public: 
    CallOpenDialog (TOpenDialog *OpenDialog); <==
    


  • Giovanni schrieb:

    [C++ Fehler] CallDialog.h(35): E2316 'Excecute' ist kein Element von 'TOpenDialog'
    [C++ Fehler] CallDialog.h(41): E2316 'Excecute' ist kein Element von 'TSaveDialog'

    " ... ist kein Element von ..." bedeutet, was Du da hingeschrieben hast ("Excecute"), gibt es in der Klasse TOpenDialog bzw. TSaveDialog nicht.
    Also nochmal: finde den Unterschied ... z.B. in der CB-Hilfe


Anmelden zum Antworten