SQLite3 w klasie

0

Witam.
Mam problem z umieszczeniem funkcji w klasie. Otóż:

Mam klasę: http://www.wklej.org/id/286959/

Problem w tym, że Exec_Callback nie chce ruszyć.

SQ.cpp: In member function 'int SQ::Exec(Glib::ustring)':
SQ.cpp error: argument of type 'int (SQ::)(void*, int, char**, char**)' does not match 'int ()(void, int, char**, char**)'

int sqlite3_exec(
  sqlite3*,                                  /* An open database */
  const char *sql,                           /* SQL to be evaluated */
  int (*callback)(void*,int,char**,char**),  /* Callback function */
  void *,                                    /* 1st argument to callback */
  char **errmsg                              /* Error msg written here */
);

Przykład http://www.sqlite.org/quickstart.html

0

Spróbuj tak:

class SQ
{
private:

	(...)
	
	static int exec_fn(void *user, int argc, char **Val, char **Nam);
	{
		return ((SQ*)user)->Exec_Callback(user,argc,Val,Nam);
	}
};

int SQ::Exec(Glib::ustring Command)
{
    char *ErrMsg = 0;

    sqlite3_exec(Database, Command.c_str(),  SQ::exec_fn, this, &ErrMsg);
}
0

Dzięki.

Możesz mi przybliżyć, co robi to:
((SQ*)user)

Zamienia wskaźnik void na wskaźnik SQ?

0

Tak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1