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 GiovanniEdit:
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