Hallo,
Ich habe mich in letzter Zeit mit OpenGL ES in C++ befasst und jetzt wollte ich das ganze mal anwenden und ein einfaches kleines Spiel(eigentlich eher eine Simulation) damit entwickeln.
Dabei habe ich recht schnell gemerkt, dass ich nicht (mehr) weiß, wann ich überhaupt einen Pointer verwenden sollte, da ich im Studium fast nur Java und im Beruf nur C# verwende.
Das Beispiel:
Ich habe eine Klasse Game die den Spielezustand kapselt. In dieser Klasse verwalte ich u.a. ein Spielbrett und sehr viele kleine Zellen, die sich umherbewegen.
Das Spielbrett bleibt über das gesamte Spiel das gleiche Objekt (zumindest vorerst).
Zu den Zellen sollen jede Sekunde einige hinzukommen und andere verschwinden.
Nun stellt sich mir die Frage, wann ich (und ob überhaupt) mit einem Pointer arbeiten sollte und wann ich die Objekte direkt auf dem Stack anlege oder z.B. vector oder unique pointer verwende.
Wird der Stack irgendwann zu voll, wenn ich weitere Objekte wie Spieler auf dem Stack anlege?
Mir ist dabei besonders die Perfomance wichtig, da das Spielbrett und damit die Anzahl der Zellen so groß wie möglich sein soll.
Im Studium haben wir unsere eigene Speicherverwaltung geschrieben, aber wann ist das sinnvoll?
Auch will ich mir für spätere Arbeit mit C++ einen guten Stil anordnen und nicht einfach "irgendwie" programmieren.
Hier mal die bisherige Game.h inklusive den Möglichkeiten, die ich bisher sehe:
|
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
|
#pragma once
#include "Board.h"
#include "Cell.h"
#include <vector>
#include <memory>
class Game
{
public:
Game();
~Game();
private:
std::unique_ptr<Board> board;
// oder
Board* board;
// oder
Board board;
std::vector<Cell> cells;
// oder
Cell* cells;
int cellCount;
};
|