klassen funktionen und strukturen
-
hallo alle!
bin relativ neu in c++habe mal diesen code geschrieben:
klasse.h
class klasse { public: struct result { int a; int b; }; result rechnen(int x); }klasse.cpp
result rechnen(int x) { result myresult; myresult.a=x*2; myresult.b=x*x; return myresult; }main.cpp
aufgabe = new klasse(); ShowMessage(IntToStr(aufgabe->rechnen(5).a) + " - " + IntToStr(aufgabe->rechnen(7).b));eingebunden ist soweit alles,
nur leider funktioniert es nicht.
was mach ich denn falsch?
-
Hallo,
Da kann ich zuerst einmal einen hier im Forum recht bekannt Satz zitieren.
"Funktioniert nicht" ist keine ausreichende Fehlerbeschreibung.
In deinem Fall würde ich mal vermuten, dass die Funktion rechnen in deiner cpp kein Member deiner Klasse ist.
deklariers mal soklasse::result klasse::rechnen(int x) { result myresult; myresult.a=x*2; myresult.b=x*x; return myresult; }Ciao
-
sorry, aber funktioniert immernoch nicht.
E2141 Fehler in der Deklarationssyntax
meckert der borland.
mehr kann ich leider auch nicht sagen
-
Wie wärs wenn du uns mal deinen Code möglichst vollständig zeigst. In der Fehlermeldung sollte auch die Zeilennummer stehen.
-
Hallo
Da passt doch der Satz mit den Grundlagen sehr gut dazu
Was mir sofort aufgefallen ist
result rechnen(int x)sollte man das nicht so schreiben
result klasse::rechnen(int x)wabei der Name "klasse" echt Klasse ist

MfG
Klaus
-
also
unit1.cpp
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; klasse *aufgabe; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { aufgabe = new klasse(); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { ShowMessage(IntToStr(aufgabe->rechnen(5).a)+" - "+IntToStr(aufgabe->rechnen(7).b)); } //---------------------------------------------------------------------------unit2.cpp
//--------------------------------------------------------------------------- #pragma hdrstop #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init) klasse::result klasse::rechnen(int x) { result myresult; myresult.a=x*2; myresult.b=x*x; return myresult; }unit2.h
//--------------------------------------------------------------------------- #ifndef Unit2H #define Unit2H //--------------------------------------------------------------------------- class klasse { public: struct result { int a; int b; }; result rechnen(int x); } #endif[C++ Fehler] Unit1.cpp(11): E2141 Fehler in der Deklarationssyntax

-
klasse:: bei
result klasse::rechnen(int x)
hatte ich oben vergessen anzugeben.
aber
wederresult klasse::rechnen(int x)noch
klasse::result klasse::rechnen(int x)funktionieren
-
Mach mal hinter der schliessenden Klammer deiner Klasse klasse ein Semikolon.
-
ups!!!

-
danke!