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