bonjour,
j'utilise sqlite3 et j'ai un problème : cette librairie exige l'utilisation d'une méthode static (comme callback) hors je voudrait que cette méthode modifie une variable propre à une instance de monobjet.
comment faire ?
bonjour,
j'utilise sqlite3 et j'ai un problème : cette librairie exige l'utilisation d'une méthode static (comme callback) hors je voudrait que cette méthode modifie une variable propre à une instance de monobjet.
comment faire ?
je voudrait que nbCount soit propre à une instance :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #ifndef SQLITE3_HH #define SQLITE3_HH #include <iostream> #include <string> #include <sqlite3.h> using namespace std; class SQLITE3 { private: sqlite3 *db; static int nbCount; public: SQLITE3(const string& tablename); ~SQLITE3(); int exe(const string& s_exe); static int callback(void *NotUsed, int argc, char **argv, char **azColName); int count(const string& s_exe); static int callbackCount(void *NotUsed, int argc, char **argv, char **azColName); static void setNb(int n); static int getNb(void); }; #endif
pour faire quelque chose comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ... SQLITE3 sql, sql2; sql.count("SELECT...."); sql2.count("SELECT...."); int n=sql.getNb(); int n2=sql2.getNb(); ...
Lorsque tu enregistres ta callback au niveau de sqlite, est ce que tu peux passer un paramètre ?
Si c'est non, ce que tu veux faire n'est pas possible à moins de passer par une variable globale. Dans le cas contraire, tu passes un pointeur this sur ta classe.
C'est du pseudo code car je ne connais pas sqlite (désolé )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 // la déclaration de la classe class CMaClasse { ... static void static_class_function(void *ExtraParam); void class_function(void); ... } // la definition de la fonction statique de callback void CMaClasse::static_class_function(void *ExtraParam) { CMaClasse *This = (CMaClasse *)ExtraParam; This->class_function(); } // la definition de la fonction de callback void CMaClasse::class_function(void) { ... } // l'enregistrement de la fonction callback ... RegisterCallback(CMaClasse::static_class_function, this); ...
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbe Un logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
non, je ne peux pas faire cela (enfin pas à ma connaissance) par contre je peux décaler le callback dans une classe utlisant SQLITE3. ça me suffit pour l'instant.
merci
edit : en fait je peux passer un argument au callback.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager