Funktionsparameter-Übergabe wie richtig?
-
Hi,
wie kann ich folgendes realisieren: ich möchte in einer Methode eine Map auf dem Heap erstellen und dann Werte in anderen Methoden / ander Klassen hinzufügenzu dieser Map.
void Class1::InitMap() { SubStrMap *map = new SubStrMap; GetParams(*map); } void Class2::GetParams(SubStrMap map) { map["erster Eintrag"] = "erster"; }Wie muss ich die map als Funktionsparameter übergeben, dass das klappt? Oder muss ich einen Pointer auf die Map übergeben? Mit der Übergabe der Adresse funktioniert es leider nicht GetParams(&map);
Gruß
Damian
-
Da du in dieser anderen Methode ja mit der originalen Map arbeiten möchtest, solltest du call-by-reference verwenden. Der Funktionsaufruf passt dann auch bzw. brauchst du in InitMap noch ein Objekt von Class2, um sie aufzurufen.
void Class2::GetParams(SubStrMap& map) { //... }
-
Da bekomme ich dann die Fehlermeldung:
"Konvertierung des Parameters 1 von 'SubStrMap **' in 'SubStrMap &' nicht möglich"
Das Objekt der Klasse Class2 hab ich.
Gruß
Damian
-
Damian schrieb:
Da bekomme ich dann die Fehlermeldung:
"Konvertierung des Parameters 1 von 'SubStrMap **' in 'SubStrMap &' nicht möglich"
Das Objekt der Klasse Class2 hab ich.
Gruß
DamianFehler gefunden,GetParams(*map); muss weiterhin verwendet werden.
-
SubStrMap *map = new SubStrMap; GetParams(*map); GetParams(SubStrMap& map) { }Das sollte eigentlich kein Fehler geben, zeig mal mehr Code^^
[ EDIT ]
Fehler gefunden,GetParams(*map); muss weiterhin verwendet werden.
Hatte ich ja eigentlich geschrieben dass das dann passt :p