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ß
    Damian

    Fehler 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


Anmelden zum Antworten