IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQLite Discussion :

function call missing argument list; use '&GenLevel::CallBacksql' to create a pointer to member


Sujet :

SQLite

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 50
    Points : 43
    Points
    43
    Par défaut function call missing argument list; use '&GenLevel::CallBacksql' to create a pointer to member
    Bonjour à tous,

    Lorsque j'essaie de compiler j'ai droit à un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1>.\Genlevel.cpp(12) : error C3867: 'GenLevel::CallBacksql': function call missing argument list; use '&GenLevel::CallBacksql' to create a pointer to member

    Voici mon header

    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
    #ifndef GENLEVEL_H_INCLUDED
    #define GENLEVEL_H_INCLUDED
     
    #include <iostream>
    #include "sqlite3.h"
     
    class GenLevel
    {
        public:
    		GenLevel();
    		int  CallBacksql(void *user_data, int num_cols, char **value, char **Column_Name); 
     
    };
     
     
     
    #endif // GENLEVEL_H_INCLUDED
    et mon cpp

    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
    #include "GenLevel.h"
     
    GenLevel::GenLevel()
    {
     
    	sqlite3 *db;
    	char **error = new char *;
     
    	int rc=sqlite3_open("testdb.db", &db);
     
    	int query=sqlite3_exec(db,"select * from Levels where id=1",CallBacksql,0,error);
     
    }
     
    int  GenLevel::CallBacksql(void *user_data, int num_cols, char **value, char **Column_Name)    
    {
    	std::cout << Column_Name[1] << ":" << value[1] << std::endl;
    	return 0;
    }
    Vous avez une idée d'ou ça pourrait venir?

    Merci d'avance

  2. #2
    Membre actif

    Inscrit en
    Décembre 2004
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 169
    Points : 225
    Points
    225
    Par défaut
    Bonsoir,


    Heu... je pense que tu donnes au compilateur l'impression de vouloir lancer la fonction CallBacksql et non pas déposer son adresse.
    Ainsi l'erreur est claire :

    Genlevel.cpp(12) : error C3867:
    'GenLevel::CallBacksql': FUNCTION call missing argument list;

    Ce qui signifie que si tu veux exécuter la fonction CallBacksql, il te manque alors la liste des arguments dans la phrase.

    Le compilateur repère quand même ton idée et cherche alors à te donner la syntaxe :

    USE '&GenLevel::CallBacksql' TO CREATE a pointer TO member

    Donc tu dois utiliser &GenLevel::CallBacksql pour déposer l'adresse du membre et non CallBacksql tout seul.

    Avec ce correctif, ton code devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int query=sqlite3_exec(db,"select * from Levels where id=1",&GenLevel::CallBacksql,0,error);
    Qu'en penses-tu ?

    a+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 50
    Points : 43
    Points
    43
    Par défaut
    Salut,

    Merci pour ta réponse

    J'avais oublié de dire que j'avais déjà essayé cette solution
    qui me donne une autre erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1>.\Genlevel.cpp(12) : error C2664: 'sqlite3_exec' : cannot convert parameter 3 from 'int (__thiscall GenLevel::* )(void *,int,char **,char **)' to 'int (__cdecl *)(void *,int,char **,char **)'
    Je pense que c'est exécuter la fonction qui doit être fait, mais dans tout les exemple que j'ai lu il ne donne pas la liste des arguments

    Il me semble qu'en fait il faut juste donner le nom de la fonction de callback, et c'est sqlite qui s'occupe d'envoyer les arguments à chaque ligne récupérée (dans le cas d'une requête avec un select), mais je peux me tromper

    Auparavant en ayant testé avec le code ci dessous ça marchait nickel:

    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
    int  CallBacksql(void *user_data, int num_cols, char **value, char **Column_Name)    
    {
    	std::cout << Column_Name[1] << ":" << value[1] << std::endl;
    	return 0;
    }
     
    int main()
    {
     
     
    		sqlite3 *db;
    		char **erreur = new char *;
     
    		int rc=sqlite3_open("testdb.db", &db);
     
    		int query=sqlite3_exec(db,"select * from testtable limit 0,3",CallBacksql,0,erreur);
     
     
    		if(erreur)
    		{
    			std::cout << "result: " << *(*erreur) << std::endl;
    		}
     
     
            return 0;
    }
    Mais ça n'était pas avec une classe dans ce cas la...

    Je sais pas si ça aide?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 50
    Points : 43
    Points
    43
    Par défaut
    Pour finir j'ai utilisé un wrapper qui m'a grandement simplifié la vie, plus d'erreur, tout fonctionne

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 16
    Points : 29
    Points
    29
    Par défaut
    Bonjour tet2brick,

    je suis dans le même cas que vous avez décris avec les 2 erreurs lorsque j'essaie de mettre le CALLBACK dans une classe.

    Pourriez-vous donner un exemple de votre solution avec le wrapper ?

    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 17/08/2010, 00h21
  2. missing ) after argument list
    Par aminaoussaleh dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 15/01/2010, 12h30
  3. Réponses: 2
    Dernier message: 14/06/2007, 10h05
  4. [VBA-E]-erreur 5(Invalid procedure call or argument)
    Par zahui_eric dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 05/04/2007, 15h28
  5. Invalid Procedure Call Or Argument
    Par Sparal dans le forum Access
    Réponses: 11
    Dernier message: 12/05/2006, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo