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

Qt Discussion :

Lier une structure et une classe via un QMap


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Par défaut Lier une structure et une classe via un QMap
    Salut,
    Pour les besoins de mon programme qui inclus le Lua, je dois lier l'instance lua (via un pointeur) et une classe faites pour gérer cette instance (que je stocke via son pointeur this)

    Le code c'est ceci :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    #include "utolua.h"
     
    static QMap<int, int> Utolua_instances;
     
    void infiniteloop(lua_State *L, lua_Debug *ar)
    {
        QMessageBox::information (0, "Test",QString::number(Utolua_instances[(int) L]->Elapsed()));
    }
     
    Utolua::Utolua()
    {
        L = lua_open();
        if (L != NULL)
            loaded = true;
        else
            return;
        Utolua_instances[(int) L] = (int) this;
        luaL_openlibs(L);
        lua_sethook (L, infiniteloop, LUA_MASKCOUNT, 5);
    }
     
    Utolua::~Utolua()
    {
        if (loaded)
        {
            Utolua_instances.remove((int) L);
            lua_close(L);   
        }
    }
     
    int Utolua::Exec(QString command)
    {
        Lua_time.start();
        return luaL_loadstring(L,command.toStdString().c_str());
    }
     
    int Utolua::Elapsed(bool ResetTime) /* time elapsed since the last execution */
    {
        if (ResetTime)
            return Lua_time.restart();
        else
            return Lua_time.elapsed();
    }
    Bon le compilateur ne gueule pas quand je veux stocker les deux pointeurs, ça marche même plutôt bien avec le pointeur L (qui est l'instance Lua, une structure)
    Par contre quand je veux accéder à une méthode de ma classe via le QMap, ça ne marche pas

    Voila l'erreur :
    C:/Projets/Lua_Qt/utolua.cpp:8: error: base operand of `->' is not a pointer
    Pour la ligne du QMessageBox (qui ne sert que pour vérifier les valeurs).

    Si je change le -> par un <gras>.</gras> , ça me renvoie :
    C:/Projets/Lua_Qt/utolua.cpp:8: error: request for member `Elapsed' in `(&Utolua_instances)->QMap<Key, T>::operator[] [with Key = int, T = int](((const int&)((const int*)(&(+L)))))', which is of non-class type `int'
    Alors justement c'est censé être un pointeur :/
    J'ai essayé d'appeler ma méthode par plusieurs façons (en rajoutant un *, on ne sait jamais), rien n'y a fait.

    Donc voila, comment accéder à la méthode de ma classe de cette façon.

    Merci d'avance

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    ben
    QMap<int, int> Utolua_instances;

    donc Utolua_instances[(int) L] retourne un int et non un pointeur ou autre chose...
    qu'est sensé faire cette map?

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Par défaut
    Retrouver un pointeur sur Utolua a partir d'un pointeur de L

    Mais j'ai résolu mon problème en modifiant la nature de QMap :
    static QMap<int, Utolua*> Utolua_instances;

    Merci quand même

Discussions similaires

  1. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  4. Réponses: 5
    Dernier message: 12/10/2008, 13h41
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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