so, ok mal langsam.
sry, ich habe erst nicht dran gedacht das meine create funktion am besten statisch seien sollte.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
|
class KeyPressed : public Command
{
private:
OIS::KeyEvent e;
KeyPressed(OIS::KeyEvent&);
public:
~KeyPressed();
static KeyPressed* create(OIS::KeyEvent&);
void doCommand();
};
|
so, ich will jetzt das meine create Methode mir einen Pointer auf ein neues Objekt von KeyPressed liefert. (ja es musse in neues objekt seien, weil ich fast jedes event mehrmals habne kann).
so, jetzt war meine idee damit ich keien switch anweisung brauche eine std::map zu verwenden, viel schönerer code
also will ich einen funktionszeiger auf create haben um den in die std::map zu packen und von dort aus aufzurufen.
ok, ich werde das jetzt erstmal testen und wenns nicht geht melde ich mich nochmal.
edit: so, ein problem ist jettz beim implementieren noch aufgetreten:
wen ich jetzt meine std::map defeniere schreibe ich ja std::map<name, typvonfunktionspointer>
aber jetzt ist das problem da, der rückgabe typ von meinen create funktionen ist ja nicht immer gleich. dafür könnte man ja noch void* nehmen. aber meine create funktionen können auch unterschiedliche anzahl an parametern haben, was mach ich denn damit?
muss ich dann einen container übergeben der die objekte enthältd damit ich überall dieselbe argumenten liste hab?