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 pour sqlite.
Je veux évidement récupérer les donnée de la base de donnée mai vu que c est une fonction callback en C static (ref la doc citer plus haut) sa ne peux pas ce faire sauf si je place une variable global.
Bon j’ai virer le reste du code pour y placer que ce qui nous interesse.
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 problème ne viens 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
};
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 sauf si mis en globals
}
printf("\n");
RETURN 0;
}
j’ai fait aux plus court pour montrer le problème:
donc le souci vien du fait que c’est static et une reprise du C lier a sqlite, 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 paramètre ,je ne voit pas comment mis prendre.
Merci d’avance te de m’avoire lu.