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

C++ Discussion :

méthode static remplacer par une méthode non statique


Sujet :

C++

  1. #1
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut méthode static remplacer par une méthode non statique
    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 ?

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par Rniamo Voir le message
    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 mon objet.

    comment faire ?
    Quel objet ? Un objet global ? Dans ce cas le problème ne pose même pas.

  3. #3
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    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
    je voudrait que nbCount soit propre à une instance :


    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();
    ...

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par Rniamo Voir le message
    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.
    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
    .

  5. #5
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    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.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/05/2011, 11h05
  2. Utiliser une méthode non-static dans une méthode static
    Par mcfly37 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 18/08/2010, 11h41
  3. Réponses: 16
    Dernier message: 26/10/2006, 16h17
  4. connaitre les paramètres demandés par une méthode
    Par von_magnus dans le forum Tkinter
    Réponses: 4
    Dernier message: 25/07/2006, 14h22
  5. une méthode static
    Par adilo dans le forum Langage
    Réponses: 5
    Dernier message: 23/06/2006, 21h10

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