Schönen Abend,
ich habe aktuell ein kleines C++ Problem und stecke mental irgendwie
fest.
Gibt es in C++ eine Möglichkeit um von einem Objekt das sich in einem
Vektor befindet auf eine Variable des Objekts zuzugreifen in dem sich
der Vektor befindet?
Ohne den Wert als Parameter einer Funktion zu übergeben.
Ich möchte die einzelnen Klassen möglichst funktionell von einander
trennen, deshalb möchte ich das nicht mit Funktionsparametern
realisieren.
Die Objekte im Vektor sollen sich bei Bedarf die Werte der Variablen
selbst holen.
Kleines Beispielprogramm wie ich mir das vorstelle:
1 | #include <iostream>
|
2 | #include <vector>
|
3 |
|
4 | using namespace std;
|
5 |
|
6 | class Thing{
|
7 | public:
|
8 | string Name;
|
9 | float Temperature;
|
10 |
|
11 | void GetRoomTemperature(void)
|
12 | {
|
13 | //INSERT CODE HERE
|
14 | }
|
15 | };
|
16 |
|
17 | class Room{
|
18 | public:
|
19 | float RoomTemperature;
|
20 | vector <Thing> ThingsInRoom;
|
21 | };
|
22 |
|
23 | int main()
|
24 | {
|
25 | Room MyRoom; // There will be a vector of rooms, this is just to show the basic problem
|
26 | MyRoom.RoomTemperature = 4.0;
|
27 | MyRoom.ThingsInRoom.push_back( {} ); //create a new "Thing" object and store it in the vector
|
28 | MyRoom.ThingsInRoom[0].Name = "Thermometer"; //give the new thing a name
|
29 |
|
30 | MyRoom.ThingsInRoom[0].GetRoomTemperature();
|
31 |
|
32 | }
|
Vererbung geht nicht weil dann müsste ich ja Room vor Thing deklarieren
und dann könnte Room keinen Vektor vom Typ Thing enthalten.
Globale Variablen gehen auch nicht denn es könnte ja einen Vektor von
Room Objekten geben.
Also wie könnte man dieses Problem lösen?