Problem mit Funktion innerhalb einer Klasse



  • Hallo,

    ich habe hier ein Skript für die Anbindung einer SqLite3 Datenbank.
    Diese ist nach Funktionen aufgeteilt.

    Zur Theorie wie das ablaufen soll:

    Ich übergebe der Funktion 'speichern' zwei Parameter.
    Die Funktion baut eine Verbindung zu einer bestehenden Sqlite3 Datenbank auf und schreibt diese Werte mittels SQL Befehl. Für die Ausführung des SQL Befehls ist daher noch eine Funktion 'callback' erforderlich.

    In einem seperaten Programm ohne Klasseninstanzen etc. läuft das problemlos.
    Mein g++ Compiler in CodeBlocks meckert:
    |Nicht definierter Verweis auf `test::callback(void*, int, char**, char**)'|

    In der sechsten Zeile von test.cpp wird die Funktion callback aufgerufen. Ich habe diese ja bereits in der Header Datei aufgelistet. Jedoch gibt es Probleme die Funktion in einer Klasse zu nutzen.

    Datei 'test.h'

    ...
    static int callback(void *NotUsed, int argc, char **argv, char **azColName);
    double speichern (double Wert1, double Wert 2); 
    ...
    

    Datei 'test.cpp'

    #include "test.h"
    
    ...
    double test::speichern(double Wert1, double Wert2)
    {
        rc = sqlite3_exec(db, buffer, callback, 0, &zErrMsg);
        if( rc != SQLITE_OK )
        {
            fprintf(stderr, "SQL error: %s\n", zErrMsg);
            sqlite3_free(zErrMsg);
        }
        else
        {
            fprintf(stdout, "Werte abgespeichert\n");
        }
        sqlite3_close(db);
    }
    
    static int callback(void *NotUsed, int argc, char **argv, char **azColName)
    {
        int i;
        for(i=0; i<argc; i++)
        {
            printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
        }
        printf("\n");
        return 0;
    }
    


  • Ich vermute mal du brauchst ein test:: vor callback in Zeile 20.



  • julianpe schrieb:

    Ich habe diese ja bereits in der Header Datei aufgelistet.

    IN der Klasse? Denn die Funktion unten gehört nicht zur Klasse.



  • tkausl schrieb:

    julianpe schrieb:

    Ich habe diese ja bereits in der Header Datei aufgelistet.

    IN der Klasse? Denn die Funktion unten gehört nicht zur Klasse.

    danke, das war das Stichwort.
    Habe es aus der header rausgenommen und ganz einfach öffnen können 🙂


Anmelden zum Antworten