Meine Frage: Wie konzipiere ich am sinnvollsten eine Klasse, die verschachtelte Listen von Objekten enthält?
Beispiel: Eine Klasse, die die Spieler eines Spiels managt.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
struct Player {
int numGold;
int numWood;
int numInhabitants;
//....
std::vector<Unit> units;
};
class PlayerManager {
private:
std::vector<Player> m_players;
//andere Daten....
public:
//....
};
|
Mein Problem ist jetzt folgendes: Was ist sinnvoller, wenn ich auf Einheiten eines Spielers zugreifen will? Eine Funktion, die eine Kopie der gesamten Daten des Spielers zurückgibt?
|
C-/C++-Quelltext
|
1
2
3
|
Player PlayerManager::GetPlayer(int index) {
return m_players[index];
}
|
Oder eine Funktion, mit der man direkt auf eine Einheit zugreift:
|
C-/C++-Quelltext
|
1
2
3
|
Unit PlayerManager::GetPlayerUnit(int index,int unitIndex) {
return m_players[index].units[unitIndex];
}
|
Beides hat Vor- und Nachteile.
Außerdem: Sollte man den Spieler eher als Struktur (public-Elemente) oder als Klasse (Kapselung) beschreiben?