Wo ist der Fehler in der Klasse? E2316



  • folgenden aufbau hat meine kleine klasse?

    bekomm folgenden fehler:

    [C++ Error] code.cpp(76): E2316 'code_admin::test_code(AnsiString)' is not a member of 'code_admin'
    [C++ Error] code.cpp(89): E2316 'code_admin::keygen(int,int)' is not a member of 'code_admin'
    [C++ Error] code.cpp(120): E2316 'code_admin::save_code(AnsiString)' is not a member of 'code_admin'
    [C++ Error] code.cpp(132): E2316 'code_admin::code_redeem(AnsiString)' is not a member of 'code_admin'

    header:

    #ifndef codeH
    #define codeH
    //---------------------------------------------------------------------------
    
    class code_admin                                                        // Klassenbezeichnung
            {
                    public:
                            code_admin();                                   // Konstruktor
                            ~code_admin();                                  // Destruktor
    
                            int random();                                   // Zufallsmethode für 4-stellige Zahl
                            int quer(int zahl);                             // Quersumme von int
                            int code (int check);                           // 4-stelliges int generieren mit Quersumme check
                            int digit(int code, int position);              // Ziffer eines 4-stelligen int an Stelle position
                            bool test_code(AnsiString code);                // Überprüfen ob Code schon vorhanden
                            AnsiString keygen(int provider, int cash);      // Code der Form XXXX XXXX XXXX XXXX XXXX generieren ausgehend von 2 Prüfziffern
                            void save_code(AnsiString code);                // Code in Datei speichern
                            void code_redeem(AnsiString code);              // Code einlösen und aus Datei löschen
            };
    
    //---------------------------------------------------------------------------
    #endif
    

    cpp:

    code_admin::code_admin()
    {}
    
    code_admin::~code_admin()
    {}
    
    code_admin::random()
    {
    ...;
    }
    
    code_admin::quer(int zahl)
    {
    ...;
    }
    
    code_admin::code (int check)
    {
    ...;
    }
    
    code_admin::digit(int code, int position)
    {
    ...;
    }
    
    code_admin::test_code(AnsiString code)
    {
    ...;
    }
    
    code_admin::keygen(int provider, int cash)
    {
    ...;
    }
    
    code_admin::save_code(AnsiString code)
    {
    ...;
    }
    
    code_admin::code_redeem(AnsiString code)
    {
    ...;
    }
    

    versteh das nich!!! die ersten methoden erkennt er doch auch! warum denn nich die letzten??? was überseh ich???

    bin für jede hilfe dankbar, tim



  • Hallo

    Weil du bei den Implementationen der Methoden nicht den Rückgabewert mit hinschreibst, so wie du es ja auch in den Deklarationen machst.
    Hintergrund : Wenn kein Rückgabewert angegeben wird nimmt C++ automatisch int. Da hast du Glück wenn die Methode wirklich int zurückgibt. Wenn aber was anderes (void/AnsiString) dann sind das für den Complier zwei verschiedene Methoden.

    bis bald
    akari



  • wow, das ging ja schnell... 😮
    jetzt klappt alles... 🙂
    vielen, vielen dank... 👍 👍 👍


Anmelden zum Antworten