En C++ fonction sqlite3_exec probleme de portée de variable
hello
je vai essayer de faire simple :roll:
selon la doc ici
http://www.sqlite.org/c3ref/exec.html
on passe par une fonction callback qui est static que je reprend donc en c++
Le souci vien donc ce poser en c++ car la classe que je fait, veux évidement récupérer les donnée de la base de donnée mai vu que c est une fonction static sa ne peux pas ce faire sauf si je place une variable global :cry:
(je simplifie le code)
Code:
1 2 3 4 5 6 7 8 9 10 11
|
dans le *.h
//std::vector<std::string> vec_returne_valeur; //si je place sa ici sa marche évidement
class sql {
public :
bool recuperasion_donnee(std::string &table,std::string collonne_valeur, std::string recherche_quoi); //fonction qui donc appelle la fonction callback je n'en place pas le code,car le probleme ne vien pas de là
private:
int callback(void *NotUsed, int argc, char **argv, char **azColName);
std::vector<std::string> vec_returne_valeur;// ici c est hors de portée et donc sa miaule
}; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
dans .cpp
int c_sql::callback(void *NotUsed, int argc, char **argv, char **azColName)
{
int i;
std::string tmp="";
std::string mystring;//conversion en de char en string
for(i=0; i<argc; i++)
{
std::cout << azColName[i] << " : " << argv[i]<< std::endl;
mystring = std::string(argv[i]);//conversion en de char en string
tmp=mystring;
//vec_returne_valeur.push_back(tmp); //BUG hors de portée
}
printf("\n");
return 0;
} |
l'erreur:
Citation:
sqlite.h: In static member function ‘static int c_sql::callback(void*, int, char**, char**)’:
sqlite.h:: error: invalid use of member ‘c_sql::vec_returne_valeur’ in static member function
sqlite.cpp:: error: from this location
sqlite.cpp: At global scope:
sqlite.cpp:: warning: unused parameter ‘NotUsed’
j'ai fait aux plus court pour montrer le problème:
donc le souci vien du fait que c'est static , meme si c'est placer en public (la fonction callback)
le problème reste le même.
question est donc comment faire pour éviter de placer le tableau de manière globale ?
vu que je ne peux pas toucher a première vue le nombre de parramètre ,je ne voit pas comment mis prendre.
Merci d'avance te de m'avoire lu.