Hallo, ich mal wieder
Diesmal ein Problem mit Singleton Klassen, denke das sollte diesmal aber lösbar sein =)
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
class LUA
{
//Methoden
public :
// Hier holen wir die Instanz der Klasse
static LUA * getInst();
// Einen Textfile parsen
void parseFile(std::string sLevelName);
protected :
LUA();
virtual ~LUA(){};
// Variablen
protected:
// Welche Datei behandeln wir gerade?
wchar_t cFile[128];
// LUA Singleton Instanz
static LUA instLUA;
// LUA Instanz innerhalb der Klasse
lua_State* Lua_;
};
|
Eine Singleton Klasse eben =) Der Teufel steckt nun in der getInst() Methode. Diese sollte ja, wenn er zum ersten Mal aufgerufen wird, den Konstruktor aufrufen. Folglich sieht er so aus:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
LUA* LUA::getInst()
{
if(instLUA == NULL)
{
instLUA = new instLUA();
}
return &instLUA;
}
|
Dummerweise haut mich mein Compiler dafür und sagt mir
|
C-/C++-Quelltext
|
1
2
3
4
|
mylua.cpp(39) : error C2678: binary '==' : no operator found which takes a left-hand operand of type 'LUA' (or there is no acceptable conversion)
g:\proggingstuff\ms sdk\include\guiddef.h(192): could be 'int operator ==(const GUID &,const GUID &)'
while trying to match the argument list '(LUA, int)'
g:\aurillion\techdemos\mapformat_gdi\src\mylua.cpp(41) : error C2061: syntax error : identifier 'instLUA'
|
Ich muss gestehen das ich weder groß Ahnung von Singletons noch von Lua habe :oops: Aber ich glaube fast das es an LUA liegt das diese Abfrage so nicht klappt, der Pointer scheint sich da irgendwie komisch zu verhalten
Wie komme ich da am besten raus? Zur Not mach ich da einfach ne Abfrage per bool aber so richtig sauber erscheint mir das nicht ...