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 so

    klasse::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.


  • Mod

    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
    weder

    result 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!


Anmelden zum Antworten