hello
je vai essayer de faire simple
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
(je simplifie le code)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
 
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:

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.