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 :
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)
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(); }
Par contre quand je veux accéder à une méthode de ma classe via le QMap, ça ne marche pas
Voila l'erreur :
Pour la ligne du QMessageBox (qui ne sert que pour vérifier les valeurs).C:/Projets/Lua_Qt/utolua.cpp:8: error: base operand of `->' is not a pointer
Si je change le -> par un <gras>.</gras> , ça me renvoie :
Alors justement c'est censé être un pointeur :/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'
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
Partager