Übergabe: vector an Funktion



  • Habe folgendes - vermutlich blödes - Problem:

    in der main habe ich einen Vector, der an eine Funktion übergeben wird, von da weiter an eine andere Funktion und in der soll er geändert werden.

    Prinzipiell wollte ich das folgendermaßen lösen

    int main
    {
     std::vector<ARTICLE> artset;
     function1(&*artset.begin());
    }
    
    void function1(ARTICLE *a_set)
    {
     function2(a_set);
    }
    
    void function2(ARTICLE *a_set)
    {
     a_set[5].aisle=3;
    };
    

    Das Problem ist, dass wenn ich nur einmal übergebe, alles läuft wie gewünscht, will heißen:

    int main
    {
     std::vector<ARTICLE> artset;
     function1(&*artset.begin());
    }
    
    void function1(ARTICLE *a_set)
    {
     std::vector<ARTICLE> a_set2;
     function2(&*a_set2.begin());
    }
    
    void function2(ARTICLE *a_set)
    {
     a_set[5].aisle=3;
    };
    

    läuft wunderbar. und ich kann in Funktion2 auf den korrekten Wert a_set[5].aisle zugreifen. Warum funktioniert das bei der Übergabe über zwei Funktionen im ersten Fall nicht?



  • Wieso machst du das so kompliziert? Übergib doch einfach einen Zeiger oder eine Referenz auf den Vektor.

    Also so:

    // Übergabe als Zeiger
    void ZeigerFunktion(std::vector<Typ> *Vektor)
    {
        Vektor->size();  // Zugriff mit ->
    }
    
    // Übergabe als Referenz
    void RefFunktion(std::vector<Typ> &Vektor)
    {
        Vektor.size();  // normaler Zugriff mit .
    }
    
    // Aufruf
    std::vector<Typ> V;
    ZeigerFunktion(&V);
    RefFunktion(V);
    


  • Vielen Dank. So klappt es auch.


Anmelden zum Antworten