Hallo,
ich habe ein Problem mit dem folgenden Programm:
|
Quellcode
|
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 <iostream>
#include <list>
using namespace std;
class GameObject {
protected:
int x, y;
//...
public:
virtual void render() = 0;
};
class Player : public GameObject {
public:
void render() {
cout << "render" << endl;
}
};
class Handler {
private:
list<GameObject> List;
public:
Handler() {
List.push_back(Player());
}
void render() {
for (list<GameObject>::iterator i = List.begin(); i != List.end(); i++) {
i->render();
}
}
};
int main() {
Handler handler;
handler.render();
return 0;
}
|
Das ist jetzt nur ein Minimalbeispiel, aber mein Ziel ist es, eine Klasse (Handler) zu schreiben, die eine Liste von Objekten durchläuft und deren Funktionen (hier
render()) aufruft.
Inhalt der Liste sollen Instanzen verschiedener Klassen sein (z.b. Player, Enemy, ...). Sie alle erben von der Klasse
GameObject bzw.
Object.
Dort werden dann auch die Funktionen aus Object definiert (in diesem Fall render(), Zeile 16).
Hier ist alles noch schlicht gehalten, aber
Object soll später grundlegenden Sachen beinhalten, die ein Objekt in einem Spiel benötigt (Koordinaten, Den Typ
|
Quellcode
|
1
|
enum Type{Player, Enemy}
|
, usw.)
Aber wie mache ich das? Ich habe es bereits in etwa so wie oben beschrieben in
Java gemacht, aber wie mache ich es in C++?
Oder gibt es eine Alternative?